快速排序------排序
//下面的算法是快速排序的原形,霍尔排序
#include<stdio.h> int q(int *a, int n, int m) { int low = n, high = m; int temp = a[low]; int i; while (low < high) { while(low < high && a[high] >= temp) {--high; } a[low] = a[high]; while(low < high && a[low] <= temp) {++low; } a[high] = a[low]; } a[high] = temp; return high; } void qsort(int *a, int n, int m) { int high; if(n < m) {high = q(a, n, m); } if(n < high-1) {qsort(a, n, high-1); } if(m > high+1) {qsort(a, high+1, m); }} int main() { int *a; int i, j, length; int temp = 0; printf("input :"); scanf("%d",&length); a = (int*) malloc((length) * sizeof(int)); printf("input %d Numble :", length); for(i = 0; i < length; i++) { scanf(" %d", &a[i]); } qsort(a, 0, length-1); for(i = 0; i < length; i++) { printf("%d ",a[i]); } printf("\n"); }// 改进后的快速排序int sort1(int *a, int n, int m){int i = n, j = n;int key = a[m], temp;if( n >= m){return 1;}while(j <= m){if( a[j] <= key){temp = a[j];a[j] = a[i];a[i] = temp;i++;j++;}else{j++;}}i = i - 1;sort1(a, n, i-1);sort1(a, i+1, m);return 1;}??
?