摘要:冒泡排序的基本思路就是相鄰的兩個數相比,如果前一個數比后一個數大小就交換,把大小的數放在后面。
冒泡排序可以說是我們高中的時候就開始接觸的排序方法了吧,這種排序的方法的思路比較簡單,不過有一定的局限性————就是在對大量的數據進行排序時,這種方法會比較蹩腳。因此,人們才會不斷的想方法去改進這種方法,后來的選擇排序就是冒泡排序的改進版。
冒泡排序的基本思路就是相鄰的兩個數相比,如果前一個數比后一個數大(小)就交換,把大(小)的數放在后面。
這種方法在排序好之前,每次對比的起點都是在第一個元素,同時每次排序又會有N個元素,即會對比N-1次,因此總的對比次數就為N(N-1),因此這個排序的時間復雜度為O(N^2)。
這是一種穩定的排序。(因為這個排序比較簡單,就不畫圖啦)
代碼實現如下:
public static void bubbleSort(int[] nums) { if(nums == null || nums.length < 2) return; int length = nums.length; int end = length - 1; for(int j = 0; j < end; j++) { for(int i = 0; i < end; i++) { //如果前一個數比后一個數大,兩數交換 if(nums[i] > nums[i+1]) { int temp = nums[i]; nums[i] = nums[i+1]; nums[i+1] = temp; } } //把最大的數放到end位置 end--; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71312.html
摘要:冒泡排序一種運行效率很低的排序算法,然而雖然排序效率低,確實排序入門很重的算法,因為冒泡排序的思路是最簡單最容易理解的排序算法了。二冒泡排序定義冒泡排序是一種通過兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止的交換排序。 一、前言 相信大部分同學都已經學過數據結構與算法這門課了,并且我們可能都會發現一個現象就是我們所學過的數據結構與算法類的書籍基本都是使用 C 語言來...
摘要:多練練排序算法,不僅能夠讓我們知道一些排序方法的底層實現細節,更能夠鍛煉我們的思維,提升編程能力。排序算法的穩定性一個穩定的排序,指的是在排序之后,相同元素的前后順序不會被改變,反之就稱為不穩定。 1. 導言 因為這是排序算法系列的第一篇文章,所以多啰嗦幾句。 排序是很常見的算法之一,現在很多編程語言都集成了一些排序算法,比如Java 的Arrays.sort()方法,這種方式讓我們可...
摘要:外層循環讓內層循環繼續排沒有排序過的數組,排序過的不用再排。那么優化后的算法能快多少呢。我們都以數組長度為來計算傳統冒泡排序步,優化后的冒泡排序步。因為優化后的冒泡排序,每排完一次,最后一個數已經是最大的,就不需要再比較了。 冒泡排序的時間用大O表示法是O(N^2). 傳統的冒泡排序: /** * @param total 要排序的數組長度 */ public void sort(in...
摘要:插入排序特殊從第二個元素開始,和第一個元素比較,如果滿足排序的順序,則交換順序。優化后選擇排序從第一個位置開始遍歷待排序的元素,找到最小值和第一元素交換從位置開始往后遍歷,找到之后元素中的最小值,和第個元素交換位置。 插入排序1、特殊:從第二個元素開始,和第一個元素比較,如果滿足排序的順序,則交換順序。2、一般:把待比較和他之前的所有元素相比(從右往左),如果滿足排序的順序,這交換。 ...
閱讀 1860·2021-09-22 15:29
閱讀 3351·2019-08-30 15:44
閱讀 3558·2019-08-30 15:43
閱讀 1763·2019-08-30 13:48
閱讀 1489·2019-08-29 13:56
閱讀 2474·2019-08-29 12:12
閱讀 965·2019-08-26 11:35
閱讀 1053·2019-08-26 10:25