選擇排序和插入排序

2021-08-13 16:16:14 字數 905 閱讀 7253

選擇排序:時間複雜度:o(n^2) 額外空間複雜度o(1)

選擇排序是從陣列的第乙個值即arr[0]開始,先假定當前值為最小值,記下index值,向後遍歷陣列,當

arr[i]小於arr[index]時,令index=i;一直到arr[length-1],獲得最小值的index然後與arr[0]交換,此時一次遍歷的時間複雜度為o(n)。下乙個迴圈從arr[i]開始,重複上述過程一直到i==arr.length-1,完成陣列的排序操作,這個迴圈次數為n-1次。所以時間複雜度為o(n^2)。其中申請的額外變數為乙個index,所以額外空間複雜度o(1)。

public

void selectsort(int arr,)

for(int i=0;i1;i++)

swap(arr,i,index);

}}public

void swap(intarr,int i,int j)

插入排序:時間複雜度:o(n^2) 額外空間複雜度o(1)

插入排序的思想是先假定第乙個值自己就是乙個有序的陣列,然後令index向後移動令假定的陣列增大,將新劃進來的值插入到前面有序陣列裡面的合適位置,一直和自己的前乙個數比較,如果小於前乙個數就交換,一直到新加入的值移動到arr[0]或者大於等於前乙個數,停止然後再划進乙個值進來,這樣乙個迴圈時間複雜度是o(n)。重複上面判斷大小的迴圈,重複n-1次。所以時間複雜度:o(n^2)。

public

void

insertsort(int arr)

for(int i=1;i//當不符合arr[j]for(int j=i;j>0&&arr[j]1];j--)

}}public

void

swap(intarr,int i,int j)

插入排序和選擇排序

排序 將一組雜亂無章的資料按照一定的規則有組織地排列起來。排序的穩定性 如果在排序中,存在前後相同的兩個元素的話,排序前和排序後他們的相對位置不發生變化。今天,先來學習插入排序和選擇排序 插入排序 直接插入排序 1 思想 每一步將乙個待排序的元其排序碼的大小,插入到前面已將排好序的一組元素的合適位置...

插入排序和選擇排序

插入排序 插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料。從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者...

選擇排序和插入排序

public class caogao 將 temp 插入到空白位置 array j 1 temp public static void main string args insertsort i for int j i selectsort i for int j i 總體思想 都分為有序區和無序...