
排序算法
一念_lqy
这个作者很懒,什么都没留下…
展开
-
插入排序
插入排序原创 2015-03-10 20:28:51 · 143 阅读 · 0 评论 -
堆排序
堆排序,即利用最大堆和最小堆进行排序。时间复杂度为O(nlogn)。原创 2015-03-11 22:01:49 · 156 阅读 · 0 评论 -
归并排序
归并排序利用的是分治算法,复杂度可以达到O(nlogn) 空间复杂度是O(n),需要另开数组保存合并两个子序列之后的有序列。//将有二个有序数列a[first...mid]和a[mid...last]合并。 void mergearray(int a[], int first, int mid, int last, int temp[]) { int i = first, j = mid原创 2015-03-11 21:53:05 · 148 阅读 · 0 评论 -
希尔排序
希尔排序,n为数组长度,步长的选择每次都为n/2void shellsort1 (int a[],int n) { for(gap=n/2;gap>=1;gap=gap/2) //步长 { for (i = 0; i < gap; i++) { for (j = i + gap; j < n; j += gap) /原创 2015-03-11 19:34:48 · 151 阅读 · 0 评论 -
选择排序
选择排序,每次选出最小的数然后和前面的数交换。这样相比冒泡排序而言只用交换一次。复杂度n平方,并且是不稳定的。如(4,4,2,第一次将第一个4和2交换。)void select sort(int a[],int n) { for(i=0;i<n;i++) { temp=i; for(j=i+1;j<n;j++) {原创 2015-03-11 20:09:37 · 159 阅读 · 0 评论 -
冒泡排序
冒泡排序,复杂度n平方。大数沉底做法。void bubble sort(int a[],int n) { for(int i=0;i<n;i++) { bool flag=0; for (int j=1;j<n-i;j++) { if(a[j]<a[j-1]) {原创 2015-03-11 19:57:25 · 176 阅读 · 0 评论 -
快速排序
快速排序,NlogN原创 2015-04-08 19:51:53 · 242 阅读 · 0 评论