1 什么是數組?
數組 Array 是一組數值(數 或 值)。
? int[] a;
? int[,] b;
? int[][] c;
? Anything[] d;
? 都是數組。
2 排序
排序就是按大小、名字、拼音或你指定的信息進行比較后排隊。
排序是數組最基本的功能需求。
3 文本格式
/// <summary>
/// 《小白學程序》第二課:數組與排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
? ? // #1 數組:一組數據(成員 或 單元)
? ? double[] score = {
? ? ? ? 540, 340, 650, 120, 554,
? ? ? ? 643, 612, 234, 345, 456
? ? };
? ? // 數組成員的個數
? ? int n = 10;
? ? // #2 打印數組(順序輸出數組)
? ? // 先組成長長的串,最后再輸出;
? ? // StringBuilder 是最常用的進行字符串 數據 組合成常常的字符串的方式;
? ? StringBuilder sb = new StringBuilder();
? ? // AppendLine 加一行;<br> 是換行;
? ? sb.AppendLine("未排序之前的成績:<br>");
? ? // #3 循環?
? ? // for 開始的句子(語句)成為循環,就是順序處理;
? ? // for 語句詳解:定義一個標志 i, 從 0 到 n-1 = (n之前);每次加 1 ;
? ? // 可見數組的標志(下標)是從 0 開始的!!!!!!!
? ? #region 標準寫法
? ? for (int i = 0; i < n; i++)
? ? {
? ? ? ? sb.AppendLine((i + 1) + ": " + score[i] + "<br>");
? ? }
? ? sb.AppendLine("<br>");
? ? #endregion
? ? // #4 排序
? ? // 兩層循環;a 從第一個開始,每次與后面每一個 b 的成績比較;
? ? // 如果 a 成績超過 b 成績的交換;
? ? for (int i = 0; i < n - 1; i++)
? ? {
? ? ? ? for (int j = i + 1; j < n; j++)
? ? ? ? {
? ? ? ? ? ? if (score[i] > score[j])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? // 交換;
? ? ? ? ? ? ? ? // 中間需要一塊墊板(stemp)用于臨時存放 a成績
? ? ? ? ? ? ? ? double stemp = score[i];
? ? ? ? ? ? ? ? score[i] = score[j];
? ? ? ? ? ? ? ? score[j] = stemp;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? // #5 輸出排序后的結果
? ? sb.AppendLine("從小到大排序之后的成績:<br>");
? ? for (int i = 1; i < n + 1; i++)
? ? {
? ? ? ? sb.AppendLine(i + ": " + score[i - 1] + "<br>");
? ? }
? ? sb.AppendLine("<br>");
? ? // #6 輸出到一個出口嵌入的網頁瀏覽器
? ? webBrowser1.DocumentText = sb.ToString();
}
?
3 代碼格式
/// <summary>
/// 《小白學程序》第二課:數組與排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{// #1 數組:一組數據(成員 或 單元)double[] score = {540, 340, 650, 120, 554,643, 612, 234, 345, 456};// 數組成員的個數int n = 10;// #2 打印數組(順序輸出數組)// 先組成長長的串,最后再輸出;// StringBuilder 是最常用的進行字符串 數據 組合成常常的字符串的方式;StringBuilder sb = new StringBuilder();// AppendLine 加一行;<br> 是換行;sb.AppendLine("未排序之前的成績:<br>");// #3 循環 // for 開始的句子(語句)成為循環,就是順序處理;// for 語句詳解:定義一個標志 i, 從 0 到 n-1 = (n之前);每次加 1 ;// 可見數組的標志(下標)是從 0 開始的!!!!!!!#region 標準寫法for (int i = 0; i < n; i++){sb.AppendLine((i + 1) + ": " + score[i] + "<br>");}sb.AppendLine("<br>");#endregion#region 另一種寫法
#if __UNUSED__// for 語句詳解:定義一個標志 i, 從 1 到 n = (n+1)之前;每次加 1 ;for (int i = 1; i < n + 1; i++){sb.AppendLine(i + ": " + score[i - 1] + "<br>");}sb.AppendLine("<br>");
#endif#endregion// #4 排序// 兩層循環;a 從第一個開始,每次與后面每一個 b 的成績比較;// 如果 a 成績超過 b 成績的交換;for (int i = 0; i < n - 1; i++){for (int j = i + 1; j < n; j++){if (score[i] > score[j]){// 交換;// 中間需要一塊墊板(stemp)用于臨時存放 a成績double stemp = score[i];score[i] = score[j];score[j] = stemp;}}}// #5 輸出排序后的結果sb.AppendLine("從小到大排序之后的成績:<br>");for (int i = 1; i < n + 1; i++){sb.AppendLine(i + ": " + score[i - 1] + "<br>");}sb.AppendLine("<br>");// #6 輸出到一個出口嵌入的網頁瀏覽器webBrowser1.DocumentText = sb.ToString();
}
4 計算結果
你非常幸運讀到的是一本真正的程序教程。