常用算法的基本对比

2017-11-19  本文已影响1人  lotawei

开这个专题主要是用于维持一种编程状态,在有算法的情况下.来解决实际生活的问题是一种很好的编程习惯.


排序终结 .jpg
#include <stdio.h>
int BinySerch(int *arr, int temp, int lengh)//设计参数,由于是整形数组,所以我们必须传递他  
{                                        //长度否则数组传参时会发生降级  
int left = 0, right = lengh - 1;  
int mid ;  
while (left <= right)  
{  
mid = left + (right - left) / 2;  
if (temp < arr[mid])  
{  
right = mid - 1;  
}  
else if (temp > arr[mid])  
{  
left = mid + 1;  
}  
else  
{  
return mid;  
}  
}  
return -1;  
}  
 void insertSort(int *array, int len)  
{  
    int i, j, temp;  
    for(i = 1; i < len; i ++)  
    {  
        temp = array[i];  
        for(j = i - 1; j >= 0; j --)  
        {  
            if(array[j] > temp)  
            {  
                array[j + 1] = array[j];      
            }else  
            {  
                break;  
            }  
        }  
        array[j + 1] = temp;  
    }  
} 
*函数名:swap 
*作用:交换两个数的值 
*参数:交换的两个数 
*返回值:无 
void swap(int *a, int *b)    
{  
   int temp;  
 
   temp = *a;  
   *a = *b;  
   *b = temp;  
 
   return ;  
}  
void quicksort(int array[], int maxlen, int begin, int end)  
{  
   int i, j;  
 
   if(begin < end)  
   {  
       i = begin + 1;  // 将array[begin]作为基准数,因此从array[begin+1]开始与基准数比较!  
       j = end;        // array[end]是数组的最后一位  
           
       while(i < j)  
       {  
           if(array[i] > array[begin])  // 如果比较的数组元素大于基准数,则交换位置。  
           {  
               swap(&array[i], &array[j]);  // 交换两个数  
               j--;  
           }  
           else  
           {  
               i++;  // 将数组向后移一位,继续与基准数比较。  
           }  
       }  
 
       /* 跳出while循环后,i = j。 
        * 此时数组被分割成两个部分  -->  array[begin+1] ~ array[i-1] < array[begin] 
        *                           -->  array[i+1] ~ array[end] > array[begin] 
        * 这个时候将数组array分成两个部分,再将array[i]与array[begin]进行比较,决定array[i]的位置。 
        * 最后将array[i]与array[begin]交换,进行两个分割部分的排序!以此类推,直到最后i = j不满足条件就退出! 
        */  
 
       if(array[i] >= array[begin])  // 这里必须要取等“>=”,否则数组元素由相同的值时,会出现错误!  
       {  
           i--;  
       }  
 
       swap(&array[begin], &array[i]);  // 交换array[i]与array[begin]  
         
       quicksort(array, maxlen, begin, i);  
       quicksort(array, maxlen, j, end);  
   }  
}
上一篇 下一篇

猜你喜欢

热点阅读