氣泡排序
思想:
氣泡排序的思想比較簡單,就是兩兩資料進行比較,大的往後走,每迴圈一次就確定乙個數的位置,就猶如扔石頭,越重的石頭落入海底越深,上圖中第一次迴圈8的位置就確定了,所以下一次迴圈的個數就可以減一
具體**實現:
void bubblesort(int *arr,int len)}}
}
插入排序
思想:插入排序的主要思想分為三步:第一先找到位置,第二挪動位置,第三插入資料;具體過程如下圖:
定義i和j指標,將i指向的資料放入tmp中,比較j指標的資料和tmp的大小,如果j指向的資料小於tmp,就把j指標減一,若是一直小於tmp就一直比較到j為0時停止,否則就找到位置,挪動j到i之間資料的位置,在將tmp的資料插入即可
具體**實現如下:
void insertsort(int *arr,int len)
}for(k = i-1;k>=j;k--)
}arr[j] = tmp;
}
上述**根據初始思路編寫,但當需要插入的位置為0號下標時就會出錯,例 1 2 0,當j=0時迴圈繼續,接下來j就會減一,那麼j的位置就會變成-1,越界,所以提倡使用下面的**:
void insert_sort(int * arr,int len)
else}}
arr[j+1] = tmp;
}
幾種常見的排序(插入排序)
插入排序 insertsort 的執 況,假定這個陣列的序是排好的,然後從頭往後,如果有數比當前外層元素的值大,則將這個數的位置往後挪,直到當前外層元素的值大於或等於它前面的位置為止.演算法在排完前k個數之後,可以保證a 1 k 是區域性有序的,保證了插入過程的正確性.比較次數n n 1 2 移動次...
Day7 排序 插入排序和氣泡排序
常用的排序 氣泡排序 插入排序 選擇排序 歸併排序 快速排序 計數排序 基數排序 桶排序 冒泡 插入 選擇 o n 2 基於比較 快排 歸併 o nlogn 基於比較 桶 計數 基數 o n 如何分析乙個排序演算法?排序演算法的執行效率 a.最好情況 最壞情況和平均情況的時間複雜度 b.時間複雜度的...
PHP常用排序演算法 氣泡排序 快速排序 插入排序
氣泡排序 兩兩交換數值,最小的值在最左邊,就如最輕的氣泡在最上邊。對整列數兩兩交換一次,最小的數在最左邊,每次都能得乙個在剩下的數中的最小 的數,冒 出來的數組成乙個有序區間,剩下的值組成一無序區間,且有序區間中每一元素值都比無序區間的小。快速排序 基準數,左右二個陣列,遞迴呼叫,合併。插入排序 排...