1.冒泡排序
两个循环是关键
第一个是冒泡执行的趟数,规则是N个数字,执行N-1趟排序
第二个是从后向前一次比较的循环
算法实现如下:
//冒泡排序算法 static List<int> BubbleSort(List<int> list) { int temp; //第一层循环: 表明要比较的次数,比如list.count个数,肯定要比较count-1次 for (int i = 0; i < list.Count - 1; i++) { //第二层循环:从后向前依次进行两两比较 for (int j = list.Count - 1; j > i; j--) { //如果前面一个数大于后面一个数则交换 if (list[j - 1] > list[j]) { temp = list[j - 1]; list[j - 1] = list[j]; list[j] = temp; } } } return list; }
2.快速排序
设计算法中分治和递归
具体怎么算的看下面
http://developer.51cto.com/art/201403/430986.htm
算法实现如下:
static void MyQuickSort(int left,int right,int[] a) { int i, j, t, temp; if (left > right) return; temp = a[left]; //temp中存的就是基准数 i = left; j = right; while (i != j) { //顺序很重要,要先从右边开始找 while (a[j] >= temp && i < j) j--; //再找右边的 while (a[i] <= temp && i < j) i++; //交换两个数在数组中的位置 if (i < j) { t = a[i]; a[i] = a[j]; a[j] = t; } } //最终将基准数归位 a[left] = a[i]; a[i] = temp; MyQuickSort(left, i - 1,a);//继续处理左边的,这里是一个递归的过程 MyQuickSort(i + 1, right,a);//继续处理右边的 ,这里是一个递归的过程 }