常用算法的基本對(duì)比

開(kāi)這個(gè)專(zhuān)題主要是用于維持一種編程狀態(tài),在有算法的情況下.來(lái)解決實(shí)際生活的問(wèn)題是一種很好的編程習(xí)慣.


排序終結(jié) .jpg
  • 二分查找
#include <stdio.h>
int BinySerch(int *arr, int temp, int lengh)//設(shè)計(jì)參數(shù),由于是整形數(shù)組,所以我們必須傳遞他  
{                                        //長(zhǎng)度否則數(shù)組傳參時(shí)會(huì)發(fā)生降級(jí)  
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;  
    }  
} 
  • 快速排序

*函數(shù)名:swap 
*作用:交換兩個(gè)數(shù)的值 
*參數(shù):交換的兩個(gè)數(shù) 
*返回值:無(wú) 
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]作為基準(zhǔn)數(shù),因此從array[begin+1]開(kāi)始與基準(zhǔn)數(shù)比較!  
       j = end;        // array[end]是數(shù)組的最后一位  
           
       while(i < j)  
       {  
           if(array[i] > array[begin])  // 如果比較的數(shù)組元素大于基準(zhǔn)數(shù),則交換位置。  
           {  
               swap(&array[i], &array[j]);  // 交換兩個(gè)數(shù)  
               j--;  
           }  
           else  
           {  
               i++;  // 將數(shù)組向后移一位,繼續(xù)與基準(zhǔn)數(shù)比較。  
           }  
       }  
 
       /* 跳出while循環(huán)后,i = j。 
        * 此時(shí)數(shù)組被分割成兩個(gè)部分  -->  array[begin+1] ~ array[i-1] < array[begin] 
        *                           -->  array[i+1] ~ array[end] > array[begin] 
        * 這個(gè)時(shí)候?qū)?shù)組array分成兩個(gè)部分,再將array[i]與array[begin]進(jìn)行比較,決定array[i]的位置。 
        * 最后將array[i]與array[begin]交換,進(jìn)行兩個(gè)分割部分的排序!以此類(lèi)推,直到最后i = j不滿(mǎn)足條件就退出! 
        */  
 
       if(array[i] >= array[begin])  // 這里必須要取等“>=”,否則數(shù)組元素由相同的值時(shí),會(huì)出現(xiàn)錯(cuò)誤!  
       {  
           i--;  
       }  
 
       swap(&array[begin], &array[i]);  // 交換array[i]與array[begin]  
         
       quicksort(array, maxlen, begin, i);  
       quicksort(array, maxlen, j, end);  
   }  
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容