- 算法讲解
- 代码实现
链接: 点击跳转BliBili
代码实现#include#include void quickSort(int array[], int LEFT, int RIGHT) { if(LEFT >= RIGHT) {//表明只有一个数字了,默认有序,停止排序 return; } int left = LEFT;//左下标 int right = RIGHT;//右下标 int pivot = array[left];//"轴"点,是一个值,不是一个下标 while(left < right) { while(left < right && array[right] >= pivot) { //下标没重合&右下标值大于"轴"点=>并不需要移动 right--; } if(left < right) { //下标没重合&右下标值小于"轴"点=>需要移动左下标处 array[left] = array[right]; } while(left < right && array[left] <= pivot) { left++; } if(left < right) { array[right] = array[left]; } if(left >= right) { array[left] = pivot; } } quickSort(array, LEFT, right - 1); quickSort(array, right + 1, RIGHT); } int main() { int n, k; printf("输入n个数字,创建一个数组,并且进行升序排序...n"); scanf("%d",&n); int array[n]; for(int i = 0; i < n; i++) { scanf("%d",&k); array[i] = k; } quickSort(array, 0, n - 1); printf("快速排序后,结果为n"); for(int i = 0; i < n; i++) { printf("%d ", array[i]); } }



