快速排序基本思想:挖坑填数+分治法
快速排序的分治partition过程有两种方法,一种是上面所述的两个指针索引一前一后逐步向后扫描的方法(算法导论上采用的是这种方法),还有一种方法是两个指针从首位向中间扫描的方法(大多数的人和一般的教材采用的是这第二种首尾向中间扫描法)。本文采用第二种方法。
1,把第一个作为基准,
2,先从后向前找,找到小于的,放在第一个
3,再从前向后找,找到大于的,放在刚刚移过的坑中,然后重复
#include#include #define Length 500 //函数声明 void QuickSort(long*,long,long); long Partition(long*,long,long); void Swap(long*,long*); int main() { long L[Length]; long i=0; printf("请分别输入%d个整数:\n",Length); for(i=0;i =pivotkey) high--; Swap(&L[low],&L[high]); while(low <=pivotkey) low++; Swap(&L[low],&L[high]); } return low; } //用于交换数据的函数 void Swap(long* a,long* b) { long temp; temp=*a; *a=*b; *b=temp; }