本来是从小到大排序的,实现的确实从大到小,不明白为什么。。。
#include <stdio.h>
#define MAX 1000
int main(){
void qsort(int v[], int left, int right);
int a[MAX] = {0};
int c;
int i = 0;
while((c=getchar())!='\n'){
a[i++] = c - '0' ;
}
qsort(a,0,i-1);
return 0;
}
void qsort(int v[], int left, int right){
void swap(int v[],int left, int right);
if (right<=left)
return;
// else if (right == left + 1)
// swap(v,left,right);
// return;
int mid = (left + right)/2;
for(int i = left; i<= right; i++){
//主要是这段代码,v[i]如果比Mid大,就交换,放到它后面,同时调整mid的位置,但是结果不对
if (v[i] > v[mid]){
swap(v,i,mid);
mid = i;
}
}
qsort(v,left,mid-1);
qsort(v,mid+1,right);
}
void swap(int v[],int left, int right){
int tmp;
tmp = v[left];
v[left] = v[right];
v[right] = tmp;
return;
}
转载请注明原文地址: https://ju.6miu.com/read-16276.html