首页 > 代码库 > 几种常见的排序算法
几种常见的排序算法
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 }
几种常见的排序算法