排序和查找的关系
- 排序是查找的前提
- 排序是重点
排序:
冒泡
插入
选择
快速排序
归并排序
#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]
}

本文深入探讨了快速排序算法的实现原理,通过C语言代码详细展示了快速排序的过程,包括递归调用和基准元素的选择,适用于对排序算法有需求的开发者。
2601

被折叠的 条评论
为什么被折叠?



