快速排序
1.快速排序是分治算法,所以用递归比较好实现
2.每一躺排序开始时,用low,high控制排序,当low < high 时结束,此时low = high
3.每一躺排序结束时,把数据分为start--low -1, high + 1--end两部分,并且此时low = high
3.关键字比较的排序算法,效率最快为log n,快速排序的优势在于空间复杂度为1,并且采用随机化的排序方法的话,时间复杂度也是log n。
void qiucksort(int A[], int start, int end){ int low = start, high = end; int mid = A[low]; if (start >= end){ return; } while(low < high){ while (low < high && A[high] >= mid) { //这里加不加等号都不影响排序的结果,下面一样 --high; } if(low < high){ A[low++] = A[high]; } while (low < high && A[low] < mid) { ++low; } if(low < high){ A[high--] = A[low]; } } A[low] = mid; qiucksort(A, high + 1, end); qiucksort(A, start, low - 1); }
浙公网安备 33010602011771号