读书人

快速排序-排序

发布时间: 2012-11-06 14:07:00 作者: rapoo

快速排序------排序

//下面的算法是快速排序的原形,霍尔排序
#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;}
??

?

读书人网 >编程

热点推荐