• 二分查找、快速排序算法、插入排序


     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 }



  • 相关阅读:
    PTA 7-6 列出连通集(深搜+广搜)
    TZOJ 2648 小希的迷宫(并查集)
    HDU 3342 Legal or Not(拓扑排序)
    哈夫曼树
    mst
    [THUWC2017]随机二分图
    视察
    [bzoj3274]Circle
    [bzoj3273]liars
    求导相关
  • 原文地址:https://www.cnblogs.com/mingyoujizao/p/9367769.html
Copyright © 2020-2023  润新知