几种排序方法的总结
冒泡排序
static void Main(string[] args) { int[] a = new int[10]; for (int i = 0; i < a.Length; i++) { a[i] = Convert.ToInt32(Console.ReadLine()); } for (int m = 0; m < a.Length; m++) { for (int n = 0; n < a.Length - 1; n++) { if (a[n] > a[n + 1]) //从小到大用大于号,反之小于号 { int temp; temp = a[n]; a[n] = a[n + 1]; a[n + 1] = temp; } } } Console.WriteLine("==================="); for (int l = 0; l < a.Length; l++) { Console.WriteLine(a[l]); } Console.ReadKey(); }
选择排序
static void Main(string[] args) { int[] a = new int[10]; for (int i = 0; i<a.Length; i++) { a[i] = Convert.ToInt32(Console.ReadLine()); } int min_index; for (int n = 0; n<a.Length - 1; n++) { min_index = n; //设置第一个数为最小值 //从第二个数到最后一个数进行循环 for (int j = n + 1; j<a.Length; j++) { //把从第二个数到最后的每个数和第一个数比较,如果比他小,就把索引赋值 if (a[j] < a[min_index]) { min_index = j; } //找到最小项交换,即将这一项移到列表中的正确位置 if (min_index != n) { int x; x = a[n]; a[n] = a[min_index]; a[min_index] = x; } } } Console.WriteLine("==================="); for (int l = 0; l < a.Length; l++) { Console.WriteLine(a[l]); } Console.ReadKey(); }
插入排序
static void Main(string[] args) { int[] a = new int[10]; for (int i = 0; i<a.Length; i++) { a[i] = Convert.ToInt32(Console.ReadLine()); } //循环从第二个数组元素开始,因为a[0]作为最初已排序部分 for (int j = 1; j<a.Length; j++) { //temp标记为未排序第一个元素 int temp = a[j]; int x = j - 1; /*将temp与已排序元素从小到大比较,寻找temp应插入的位置*/ while (x >= 0 && a[x] > temp) { a[x + 1] = a[x]; x--; } a[x + 1] = temp; } Console.WriteLine("==================="); for (int l = 0; l < a.Length; l++) { Console.WriteLine(a[l]); } Console.ReadKey(); }