摘要:插入排序特殊從第二個元素開始,和第一個元素比較,如果滿足排序的順序,則交換順序。優化后選擇排序從第一個位置開始遍歷待排序的元素,找到最小值和第一元素交換從位置開始往后遍歷,找到之后元素中的最小值,和第個元素交換位置。
插入排序
1、特殊:從第二個元素開始,和第一個元素比較,如果滿足排序的順序,則交換順序。
2、一般:把待比較和他之前的所有元素相比(從右往左),如果滿足排序的順序,這交換。
private static void insertSort(int[] arr){ for (int i = 1; i < arr.length; i++){ //從第二個元素開始 for (int j = i; j > 0; j--){ //這個元素和之前的元素比較 if (arr[j] < arr[j-1]){ int temp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = temp; } } } }
2、冒泡排序
1、從第一個元素開始,和第二個元素相比,如果滿足排序條件,則交換
2、把未排序的元素和后面的元素依次比較,如果滿足排序條件,則交換
最初
private static void bubbleSort(int[] arr){ for (int i = 0; i < arr.length-1; i++){ for (int j = 0; j < arr.length - 1; j++){ if (arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } }
因為每次循環后,i前面的元素已經排好序。所以可以進行優化。
優化后:
private static void bubbleSort(int[] arr){ for (int i = 0; i < arr.length-1; i++){ for (int j = i+1; j < arr.length - 1; j++){ if (arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } }
3、選擇排序
1、從第一個位置開始遍歷待排序的元素,找到最小值和第一元素交換
2、從位置i開始往后遍歷,找到i之后元素中的最小值,和第i個元素交換位置。
private static void selectSort(int[] arr){ int minLoc,temp; for (int i = 0; i < arr.length-1; i++){ minLoc = i; for (int j = i+1; j < arr.length; j++){ if (arr[j] < arr[minLoc]){ minLoc = j; } } temp = arr[i]; arr[i] = arr[minLoc];; arr[minLoc] = temp; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76338.html
摘要:前面介紹了七大算法的思想與實現步驟,下面來做一個歸總。直到無序區中的數為零,結束排序。步驟以從小到大為例,排序數組大小為。比較完以后則排序結束。堆排序思想堆排序是采用樹的形式的數據結構來進行排序的,其中每一個堆都是完全二叉樹。 前面介紹了七大算法的思想與實現步驟,下面來做一個歸總。 排序方法 平均復雜度 最壞復雜度 最好復雜度 輔助空間 穩定性 直接選擇排序 O(n^2...
摘要:之所以把冒泡排序選擇排序插入排序放在一起比較,是因為它們的平均時間復雜度都為。其中,冒泡排序就是原地排序算法。所以冒泡排序是穩定的排序算法。選擇排序思路選擇排序算法的實現思路有點類似插入排序,也分已排序區間和未排序區間。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法為王。 想學好前端,先練好內功,...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...
閱讀 3467·2023-04-25 23:25
閱讀 2111·2021-11-12 10:36
閱讀 2826·2019-08-30 12:47
閱讀 2049·2019-08-29 18:45
閱讀 447·2019-08-29 17:28
閱讀 1793·2019-08-29 17:15
閱讀 1718·2019-08-29 16:05
閱讀 1421·2019-08-29 14:17