程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#基礎解析之Ⅳ(數組和排序)

C#基礎解析之Ⅳ(數組和排序)

編輯:C#入門知識

今天和大家一起來討論一下C#中的數組和排序。首先,先感謝一下大家的討論和關注,這無疑是對我本人的最大支持,有了討論我們才可以發現問題,解決問題,這樣我們就可以不斷的進步,不斷的提升自己。在這裡我還想多說兩句,在之前的留言中我看到有說我寫的文章比較淺,我想和大家解釋一下,本人所寫的文章都是一些基礎中的基礎,比較適合新人來研究和學習(本人也是個新手),希望老鳥和高手們給予正確的指點和幫助,因為我們都是一個台階一個台階爬上來的。。。
好的!我們來進入今天的正題-----數組和排序。今天的內容相對而言不是很多,但是有些東西是比較重要的比如說:冒泡排序,冒泡排序好像在面試的時候問的挺多的!呵呵!還是先來看一下一維數組吧,什麼叫數組: 數組就是指具有相同名稱和類型的一組變量,數組中的每個變量稱為數組元素。由於有了數組,可以用相同名字引用一系列變量,並用索引號(下標)來識別它們。在許多場合中,我們使用數組可以縮短和簡化程序。
還是老樣子,我們用例子來說話:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             string name1 = "人族聯盟";
 6             string name2 = "獸人部落";
 7             string name3 = "不死亡靈";
 8             string name4 = "暗夜精靈";
 9             Console.WriteLine("第一位玩家所用種族:{0}", name1);
10             Console.WriteLine("第二位玩家所用種族:{0}", name2);
11             Console.WriteLine("第三位玩家所用種族:{0}", name3);
12             Console.WriteLine("第四位玩家所用種族:{0}", name4);
13             Console.ReadKey();
14         }
15     }

運行結果:
  \


 

大家一看就能看出上面這些代碼比較麻煩而且也比較啰嗦,我們用數組寫一下:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5            //聲明有4個值得數組
 6             string[] name = new string[4] { "人族聯盟", "獸人部落", "不死亡靈", "暗夜精靈" };
 7             for(int i=0;i<4;i++)//循環4次
 8             {
 9                 //輸出每個玩家
10                 Console.WriteLine("第{0}位玩家所用種族:{1}",i+1,name[i]);
11             }
12             Console.ReadKey();
13         }
14     }

運行結果:

  \

 

從例子中我們就可以明顯的看出來用數組的好處,它不僅能夠大大減少代碼的數量,而且能夠通過循環來操作更多的值,這樣就可以讓我們寫出更漂亮的代碼了。
為了更進一步了解數組我們還是看一下它的語法結構吧:
數組類型[] 數組名=new 數據類型[數組長度];
上面這個是創建數組,舉個例子:int[] num =new int [5];//創建一個容納5個整形值得數組
其中new是關鍵字,就是在內存裡給數組分配了保存值得空間。數組裡面的值(元素)都必須是同一種類型。而且數組長度是表示這個數組裡最多能容納多少值(元素)。我們也可以給數組初始化比如:int [] num =new int [5]{12,32,24,55,13,33};這裡面數組有幾個值,那麼數組長度就是多少。如果數組長度是5,而數組中放入了第6個值,那麼程序就會報錯,這個也就是我們所說的數組越界。
數組的長度我們有必要簡單的說一下,一般數組的長度表示為:數組名.Length,這樣我們就可以得到數組的長度了。來看個例子:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             //初始化一個字符串數組
 6             string[] name = { "人族聯盟", "獸人部落", "不死亡靈", "暗夜精靈" };
 7             //循環從0開始,代表下標www.2cto.com
 8             for (int i = 0; i < name.Length; i++)//(^o^)注意啦!Length在這裡!
 9             {
10                 //判斷這個數組的一個元素的值是否是獸人部落
11                 if (name[i] == "獸人部落")
12                 {
13                     Console.WriteLine("第{0}個是{1}。",i+1,name[i]);
14                     break;
15                 }
16             }
17             Console.ReadKey();
18         }
19     }

運行結果:
  \


 

上面這個就是Length的用法,Length就是用來得到一個數字的長度,在許多情況下我們都是不可能知道數組的長度的,所以有了數組名.Length就方便多了。
接下來我們看一下排序,對於排序我想大家第一感覺想到的就是冒泡排序了,好的接下來我們就看一下冒泡排序,首先來了解一下冒泡排序的概念(概念來自百度文庫):
依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重復以上過程,仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到最大數前的一對相鄰數,將小數放前,大數放後,第二趟結束,在倒數第二個數中得到一個新的最大數。如此下去,直至最終完成排序。
由於在排序過程中總是小數往前放,大數往後放,相當於氣泡往上升,所以稱作冒泡排序。
以上就是冒泡排序的概念,概念畢竟是概念,我感覺沒有例子說明的更清楚些;好的,我們還是用例子來說話:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int[] change = { 23, 11, 54, 33, 7 };
 6             int length = change.Length;//得到數組的長度
 7             int i;
 8             Console.WriteLine("冒泡排序前:");
 9             for (i = 0; i < length; i++)//循環輸出排序前的值
10             {
11                 Console.WriteLine("{0}", change[i]);
12             }
13             //下面進行冒泡排序(降序)
14             for (i = 0; i < length - 1; i++)
15             {
16                 for (int j = 0; j < length - i - 1; j++)
17                 {
18                     //如果數組中相鄰的兩個元素前面的大於後面的,那麼進行交換。
19                     if (change[j] < change[j + 1])
20                     {
21                         int empty = change[j];
22                         change[j] = change[j + 1];
23                         change[j + 1] = empty;
24                     }
25                 }
26             }
27             Console.WriteLine("冒泡排序後:");
28             for (i = 0; i < length; i++)
29             {
30                 Console.WriteLine("{0}", change[i]);//循環輸出冒泡排序結果
31             }
32             Console.ReadKey();
33         }
34     }

運行結果:

  \

 

對於數組的排序有好多種方法,上面這種是最常規的方法,當然在Array類中有兩個方法就是專門來完成排序的,一會我們再來看這兩方法,下面我們還是來看一下語法吧,只要搞懂語法了,就可以自己隨便排序了。
冒泡排序語法:
      for (int i = 0; i < 數組長度 - 1; i++)
            {
                for (int j = 0; j < 數組長度 - i - 1; j++)
                {
                    if (數組名[j] < 數組名[j + 1])
                    {
                        int empty = 數組名[j];
                        數組名[j] = 數組名[j + 1];
                        數組名[j + 1] = empty;
                    }
                }
            }

上面這個語法是降序排序,如果想升序的話就把if(數組名[j]<數組名[j=1])裡面的小於號“<”改成大於號“>”就可以了。
剛才我們說到了Array類中的兩個排序的方法,下面我們就簡單的介紹一下Array類中的這兩個方法。
在Array中實現升序排列的方法是Array.Sort(數組名),比如:Array.Sort(change).當然了降序也有Array.Reverse(數組名),比如:Array.Reverse(change),這個Reverse就是把數組的排序顛倒過來,也叫反轉。
下面我們就把這兩個方法放到實例中看看效果:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int[] change = { 23, 11, 54, 33, 7 };
 6             int length = change.Length;//得到數組的長度
 7             int i;
 8             Console.WriteLine("Array排序前:");
 9             for (i = 0; i < length; i++)//循環輸出排序前的值
10             {
11                 Console.WriteLine("{0}", change[i]);
12             }
13             //下面是Array.Sort升序排列
14             Array.Sort(change);
15             Console.WriteLine("Array.Sort排序後:");
16             for (i = 0; i < length; i++)
17             {
18                 Console.WriteLine("{0}", change[i]);//循環輸出Array.Srot升序排列結果
19             }
20             //下面是Array.Reverse降序排列後
21             Array.Reverse(change);
22             Console.WriteLine("Array.Reverse排序後:");
23             for (i = 0; i < length; i++)
24             {
25                 Console.WriteLine("{0}", change[i]);//循環輸出Array.Reverse降序排列結果
26             }
27             Console.ReadKey();
28         }
29     }

運行結果:

  \

 

冒泡排序和Array類中的兩個方法排序實現出來的效果是相同的,不過相比而言冒泡排序的通用性很強,而且使用范圍也比較廣,還是希望大家多采用冒泡排序。


總結:1.數組的創建;

   2.數組的長度;

   3.冒泡排序;

   4.Array類的兩個方法;

以上就是本次的分享,可能內容比較少,但是只要把它都很好的掌握了,我覺得也是一種進步,知識在於積累嘛!對吧!Ok!The end!

此文是本人的個人觀點,如有不完善或者不准確的地方,歡迎高手進行批評,老鳥進行指點。

 

摘自  青蘋果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved