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 }
1 /**********插入排序*****************/ 2 int insert_sort(int *num,int size) 3 { 4 for(int i=0;i<size;i++) 5 { 6 int j=0; 7 while((num[j]<num[i])&&(j<i))//找到要插入的位置 8 { 9 j++; 10 } 11 if(i!=j)//相等则位置不用交换 12 { 13 int count = num[i]; 14 for(int k=i;k>j;k--) 15 { 16 num[k]= num[k-1]; 17 } 18 num[j] = count;//插入 19 } 20 } 21 }