//
// Created by hejinyang on 2019/12/9.
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LENGTH 50
int partition(int *data, int low, int high) { // 返回最后元素枢轴位置
int i = low, j = high;
int tmp = data[low];
while (i < j) {
while (i < j && data[j] >= tmp) j--;
data[i] = data[j];
while (i < j && data[i] <= tmp) i++;
data[j] = data[i];
}
data[i] = tmp;
return i;
}
void quicksort(int *data, int low, int high) {
if (low < high) {
int p = partition(data, low, high);
quicksort(data, low, p - 1);
quicksort(data, p + 1, high);
}
}
void printInfo(int *data, int size){
printf_s("[");
for (int i = 0; i < size; ++i) {
printf_s("%d ", data[i]);
}
printf_s("]\n");
}
int main() {
srand((unsigned int) time(NULL));
int data[LENGTH] = {0};
for (int i = 0; i < LENGTH; ++i) {
data[i] = rand() % 100 + 1;
}
printInfo(data, LENGTH);
printf_s("--------------\n");
quicksort(data, 0, LENGTH - 1);
printInfo(data, LENGTH);
return 0;
}
十大排序之快速排序
最新推荐文章于 2024-06-01 17:32:52 发布