大数据单线程最快,多线程用希尔
#include<stdio.h>
#include <stdlib.h>
void swap(int * pi, int *pj) { //交换
int temp = *pi;
*pi = *pj;
*pj = temp;
}
void show(int *p,int n) {//显示数组状态
printf("\n此时状态 ");
for (int i = 0; i < 10; i++) {
printf("%4d", p[i]);
}
}
void quick(int *arr, int iLeft, int iRight) {
int i = iLeft;//从左边开始循环
int j = iRight + 1;//i<j 从右边开始循环
if (i < j){
do {
do //最靠近右边的一个小于等于它的数
{
i++;
} while (arr[i]<=arr[iLeft] && i<=iRight);
do //最靠近右边大于等于它的数
{
j--;
} while (arr[j]>= arr[iLeft] && j>iLeft);
if (i < j) {
swap(&arr[i],&arr[j]);//交换
}
//show(arr, 10);
} while (i<j);
swap(&arr[iLeft],&arr[j]);//交换
//show(arr, 10);
quick(arr, iLeft, j - 1);//分割左边
quick(arr, j + 1, iRight);//分割右边
}
}
void main() {
int num[10] = { 10,9,20,19,13,8,9,22,0,91 };
quick(num, 0, 9);
show(num, 10);
system("pause");
}