快速选择

    xiaoxiao2021-03-25  98

    本来是从小到大排序的,实现的确实从大到小,不明白为什么。。。 #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

    最新回复(0)