首页 > 代码库 > 几种常见的排序算法

几种常见的排序算法

1冒泡排序法

  例如 数组 3,9,27,6,18,12,21,15

       第一轮:

               排序选择第一位数作为比较对象,依次比较后面的数,如果比3小就交换

      3,9,27,6,18,12,21,15   

      3,9,27,6,18,12,21,15

      3,9,27,6,18,12,21,15

      3,9,27,6,18,12,21,15

      3,9,27,6,18,12,21,15

      3,9,27,6,18,12,21,15

      3,9,27,6,18,12,21,15

       第二轮:选择第二位数作为比较对象,依次和后面的数比较

      3,9,27,6,18,12,21,15

      3,9,27,6,18,12,21,15

      3,6,27,9,18,12,21,15      9比6大则交换

      3,6,27,9,18,12,21,15

      3,6,27,9,18,12,21,15

      3,6,27,9,18,12,21,15

      3,6,27,9,18,12,21,15

  第三轮:选择第三位数作为比较对象,依次和后面的数比较

      3,6,27,9,18,12,21,15   27比9大则交换

      3,6,9,27,18,12,21,15

      3,6,9,27,18,12,21,15

      3,6,9,27,18,12,21,15

      3,6,9,27,18,12,21,15

      3,6,9,27,18,12,21,15

  第四轮:选择第四位数作为比较对象,依次和后面的数比较

      3,6,9,27,18,12,21,15    27比18大则交换

      3,6,9,18,27,12,21,15    18比12大则交换

      3,6,9,12,27,18,21,15

      3,6,9,12,27,18,21,15

  第五轮:选择第五位数作为比较对象,依次和后面的数比较

      3,6,9,12,27,18,21,15    27比18大则交换

      3,6,9,12,18,27,21,15

      3,6,9,12,18,27,21,15   18比15大则交换

      3,6,9,12,15,27,21,18

  第六轮:选择第六位数作为比较对象,依次和后面的数比较

      3,6,9,12,15,27,21,18   27比21大则交换、

      3,6,9,12,15,21,27,18   21比18大则交换

      3,6,9,12,15,18,27,21

  第七轮:选择第七位数作为比较对象,依次和后面的数比较

      3,6,9,12,15,18,27,21   27比21大则交换

      3,6,9,12,15,18,21,27

以下是代码:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace Research 8 { 9     class Program10     {11         static void Main(string[] args)12         {13             int[] arr = new int[] { 3, 9, 27, 6, 18, 12, 21, 15 };  //定义一个一维数组,并赋值14             foreach(int m in arr)           //循环遍历定义的一维数组,并输出其中的元素15             Console.Write(m + " ");16             Console.WriteLine();17             int j, temp;   //定义两个int类型的变量,分别用来表示数组下表和存储新的数组元素18             for(int i=0;i<arr.Length-1;i++)   //根据数据下标的值遍历数组元素19             { j = i + 1;20               id:                           //定义一个标识,以便从这里开始执行语句21                 if (arr[i] > arr[j])        //判断前后两个数的大小22                 {23                     temp = arr[i];           //将比较后大的元素赋值给定义的int变量24                     arr[i] = arr[j];         //将后一个元素的值赋值给前一个元素25                     arr[j] = temp;           //将int变量中存储的元素值赋值给后一个元素26                     goto id;                 //返回标识,继续判断后面的元素27                 }28                 else29                     if(j<arr.Length-1)       //判断是否执行到最后一个元素30                     {31                         j++;                   //如果没有,则再往后判断32                         goto id;                   //返回标识,继续判断后面的元素33                     }34             }35             foreach (int n in arr)              //循环遍历排序后的数组元素并输出36              Console.Write(n + " ");37             Console.WriteLine();38             Console.ReadLine();39             40 41              42         }43     }44 }

 

几种常见的排序算法