直接用Dev-C++编译运行即可
以C89标准
/**
* 快速排序
* 空间复杂度:
* 平均时间复杂度:O(nlgn)
* 最差:O(n^2)
* 最好:
*
**/
void sort(int *data,int left,int right){
int i,j,t,temp;
if(left > right){
return;
}
temp = data[left];
i = left;
j = right;
while(i != j){
//先从左边开始找
while(data[j] > temp && j > i){
j--;
}
//再从右边开始找
while(data[i] < temp && i < j){
i++;
}
//交换数据
if(i<j){
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
//i=j 后基准数要归位
if(data[left] > data[i]){
data[left] = data[i];
data[i] = temp;
}
//继续处理左边的
sort(data,left,i-1);
//继续处理右边的
sort(data,i+1,right);
}
int main(){
int i;
int data[] = {5,1,6,8,9,65,87,888,99,74};
sort(data,0,9);
for (i = 0; i < 10; ++i)
{
printf("%d\n", data[i]);
}
}