快速排序程序
#include <stdio.h> int FindPos(int * a,int low, int high); void QuickSort(int * a, int low, int high); int main() { int a[6] = {2, 1, 0, 5, 4, -96}; //此处可以多试几组数据 int i; QuickSort(a, 0, 5);//第二个参数表示第一个元素的下标, 第三参数表示最后一个元素的下标 for(i=0;i<6;i++) printf("%d ", a[i]); printf(" "); return 0; } void QuickSort(int * a, int low, int high) { int pos; if(low<high) { pos = FindPos(a, low, high); QuickSort(a, low, pos-1); QuickSort(a, pos+1, high); } } int FindPos(int * a,int low, int high) { int val = a[low]; while(low<high) { while(low<high&&a[high]>=val) //当high的值大于val时high往右移 high--; a[low] = a[high]; while(low<high&&a[low]<=val) low++; a[high] = a[low]; } //终止while循环后low和high一定是相等的 a[low] = val;//此时a[low] = a[high] return low; //low可以改为high,但不可以改为val ,但不能改为a[low],也不能改为a[high]; }
排序和查找的关系
查找是排序的前提
排序是重点