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