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