排序和查找的关系
- 排序是查找的前提
- 排序是重点
排序:
冒泡
插入
选择
快速排序
归并排序
#include <stdio.h>
void QuickSort(int * a,int low,int high);
int FindPos(int * a,int low,int high);
int main(void)
{
int a[6]={2,1,-10,5,4,3};
int i;
QuickSort(a,0,5);//第二个参数表示第一个元素的下标,第二个参数表示最后一个元素的下标
for (i=0;i<6;i++)
printf("%d ",a[i]);
printf("\n");
}
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;
a[low]=a[high];
while(low<high&&a[low]<=val)
++low;
a[high]=a[low];
}//while循环终止后,low和high一定是相等的
a[low]=val;
return low;//return low或high都可以,但是不能为val,a[low],a[high]
}