首先來看牛客網的一道筆試題
問這段**是 選擇排序還是插入排序。怎麼判斷呢,這裡先給出結論。
資料交換swap發生在while,for 等迴圈裡面的是 『插入排序』,在迴圈外的,是『選擇排序』。
為什麼會有這個結論呢?我們把插入排序和選擇排序**全寫出來對比,一看就知道了。
#includeint swap(int *a,int *b)
/* 選擇排序的原理:每次在無序佇列中「選擇」出最小值,放到有序佇列的最後,並從無序佇列
中去除該值(具體實現略有區別)。
選擇排序的**如下:
*/
void selection_sort(int a,int n)
a[j+1]=a;
} } int main(int argc, char *argv)
; // bubble_sort(a , 6);
//selection_sort(a , 6);
insertion_sort(a, 6);
int i;
for(i=0;i
(**來自
選擇排序和插入排序
選擇排序 時間複雜度 o n 2 額外空間複雜度o 1 選擇排序是從陣列的第乙個值即arr 0 開始,先假定當前值為最小值,記下index值,向後遍歷陣列,當 arr i 小於arr index 時,令index i 一直到arr length 1 獲得最小值的index然後與arr 0 交換,此時...
插入排序和選擇排序
排序 將一組雜亂無章的資料按照一定的規則有組織地排列起來。排序的穩定性 如果在排序中,存在前後相同的兩個元素的話,排序前和排序後他們的相對位置不發生變化。今天,先來學習插入排序和選擇排序 插入排序 直接插入排序 1 思想 每一步將乙個待排序的元其排序碼的大小,插入到前面已將排好序的一組元素的合適位置...
插入排序和選擇排序
插入排序 插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料。從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者...