簡單排序 插入排序 氣泡排序 選擇排序

2021-09-02 14:58:53 字數 1495 閱讀 4981

1.基本思想

每一步將乙個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。

3.**實現

public class insertionsorting ;

for(int i = 1; i < arr.length; i++)

} //遍歷輸出排序好的陣列元素

for(int i : arr)

} private static void swap(int arr, int j, int i)

}

4.總結

簡單插入排序在最好情況下,需要比較n-1次,無需交換元素,時間複雜度為o(n);在最壞情況下,時間複雜度依然為o(n*n)。但是在陣列元素隨機排列的情況下,插入排序要優於氣泡排序和選擇排序。所以,雖然三個排序(冒泡、選擇、插入)的時間複雜度都是o(n*n),但是插入排序是效率最高的。

1.原理

對相鄰的元素進行兩兩比較,如果順序相反則進行交換,這樣,每一輪排序會有乙個最大或最小的元素浮到頂端,最終達到完全有序。

3.**實現

/**

* @author daniel

* 氣泡排序進行陣列元素排序

* 每次比較相鄰的兩個元素,經過每一輪排序,就會有乙個大的數排在最後(每次都比較出最大的乙個數)

*/public class bubblesortdemo ;//靜態初始化乙個陣列

//氣泡排序

for(int i = 0; i < arr.length-1; i ++) }}

for (int i : arr) }}

4.總結

氣泡排序中,n個元素要進行n-1輪排序,第i次排序要比較n-i次。時間複雜度為o(n*n)

1.原理

每一趟從待排序的資料元素中選擇最小(或最大)的乙個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。

2.**實現

public class selectionsort ;

for(int i = 0;i < arr.length - 1; i++)

}//判斷當前最小元素的下標是否改變,若改變,交換值

if(minindex != i)

} //遍歷輸出排序後的陣列元素

for(int i : arr)

}}

3.總結

選擇排序和氣泡排序一樣,n個元素需要n-1輪排序,在最好情況下也就是陣列完全有序的時候,無需任何交換移動,在最差情況下,也就是陣列倒序的時候,交換次數為n-1次。綜合下來,時間複雜度為o(n2)。

參考資料:

簡單排序 氣泡排序,插入排序,選擇排序

簡單排序 氣泡排序,插入排序,選擇排序 這些演算法思想是比較簡單的,執行速度也相對慢一些,不過,在某些情況下比那些複雜演算法實際上還要好一些,比如,對於小規模的檔案以及基本有序的檔案,插入演算法能比快速排序演算法更為有效。如何排序 1 比較兩個資料項 2 交換兩個資料想,或者複製其中的一項 氣泡排序...

簡單排序 氣泡排序 簡單選擇排序 插入排序)

氣泡排序 氣泡排序,掃瞄len次,每次用下標0掃瞄到len 1 i,比較相鄰的兩個元素並交換 param num param len void bubblesort int num,int len cout b 簡單選擇排序 簡單選擇排序 掃瞄len次,每次從下標i掃瞄到len 1,每次掃瞄找到乙個...

簡單排序二 氣泡排序 選擇排序 插入排序練習

package com.wei public class arraytool 函式功能 顯示陣列的元素 返回值 空 引數 array整形陣列 public static void showarray final int array system.out.println 函式功能 尋找陣列的最小值下標...