加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2016_code_quicksort.cpp 862 Bytes
一键复制 编辑 原始数据 按行查看 历史
xusun000 提交于 2021-12-01 16:31 . 更改名称
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
void printArr(int a[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
}
int Partition(int A[], int low, int high) {
//快速排序
int pivot = A[low]; //选取第一个作为枢轴
while (low < high) {
while (low < high && A[high] >= pivot)
high--;
A[low] = A[high];
while (low < high && A[low] <= pivot)
low++;
A[high] = A[low];
}
A[low] = pivot;
return low;
}
void QuickDivideSort(int A[], int low, int high, int n) {
if (low < high) {
int pivot = Partition(A, low, high);
if (pivot < n / 2)//划分出n/2的位置
QuickDivideSort(A, pivot + 1, high, n);
else
QuickDivideSort(A, low, pivot - 1, n);
}
}
int main() {
int sort[] = { 2, 3, 3, 5, 6, 7, 1, 1, 1, 1, 1 };
int n = sizeof(sort) / 4;
QuickDivideSort(sort, 0, n - 1, n);
printArr(sort, 11);
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化