二分查找与快速排序算法

 1 /**********二分查找*****************/
 2 int half_find(int *num,int size, int a)
 3 {
 4     int i=0;
 5     int low=0;
 6     int high=size-1;
 7     int mid;//记录中间位置
 8     while(low<=high)
 9     {
10         mid = (low+high)/2;
11         if(num[mid] == a)
12             return mid;//返回所在位置
13         if(num[mid] > a)
14             high = mid-1;//减去大的那一半
15         if(num[mid] <a)
16             low = mid+1;//减去小的那半
17     }
18     return false;//没找到
19 }
20 /**********快速排序算法*****************/
21 void QuickSort(char s[],int low,int high)
22 {
23     int i;
24     int last;       //记录基准的位置
25     if(low<high)    //当数组中的元素个数大于1时,才进行操作
26     {
27         last=low;   //选取第一个元素作为基准
28     //把小于基准元与大于基准元的分开,last记录它们分开的界限
29     for(i=low+1;i<=high;i++)
30     {
31         if(s[i]<s[low])
32             swap(s,++last,i);
33     }
34  
35     swap(s,last,low);//基准元与界限交换,这样的话,基准元两边就是一边大于,一边小于;
36     QuickSort(s,low,last-1);  //对左区间递归排序
37     QuickSort(s,last+1,high);//对右区间递归排序
38     }
39 }
40 /*交换数组中的两个元素*/
41 void swap(char s[],int i,int j)
42 {
43     int temp;
44     temp=s[i];
45     s[i]=s[j];
46     s[j]=temp;
47 }

猜你喜欢

转载自www.cnblogs.com/mingyoujizao/p/9367769.html
今日推荐