排序有很多種方法,但人們首先總會想起冒泡和快排,現在總結一下這兩種經典算法。 1. 冒泡 冒泡排序還可以優化,例如當第一次冒泡時發現所有數字已經按照順序排列,則跳出循環,不必在進行后面的n-2次冒泡,可以如果數據量大的話節約的時間很明顯。 優化原理是增進一個標簽flag ...
冒泡排序: 顧名思義:參與排序的數據就像水中的氣泡慢慢浮出水面一樣 浮 到數列頂端。 冒泡排序要點: 兩層循環,外層循環控制走訪數列重復進行的次數,內層循環進行數據的比較 交換,是數據 上浮 。 內層循環是相鄰的數據進行比較。 C語言代碼實現: 代碼優化: 通過對核心代碼的分析,不難發現,當給我們的數據已經是有序狀態時,外層循環仍舊會執行n 次,內層循環因為數據已經有序,只會進行相鄰數據的比較而不 ...
2017-03-29 11:26 0 1496 推薦指數:
排序有很多種方法,但人們首先總會想起冒泡和快排,現在總結一下這兩種經典算法。 1. 冒泡 冒泡排序還可以優化,例如當第一次冒泡時發現所有數字已經按照順序排列,則跳出循環,不必在進行后面的n-2次冒泡,可以如果數據量大的話節約的時間很明顯。 優化原理是增進一個標簽flag ...
1、冒泡排序 最初在學c語言時,老師就教的這個排序算法,原理比較簡單:從數組下標為0處開始遍歷,相鄰之間進行比較,若a[i]>a[i+1],則exchange(a[i],a[i+1]),當然也可以將小的往后傳遞,將此過程不斷進行,那么最后數組就有序了。 要點:(1)每遍歷一遍 ...
這篇文章僅僅為心中自證,不是算法教學,也不想誤人子弟,謝謝各位。 第一章:一些感慨 我斷斷續續學習算法兩年多了,這說起來是多么苦澀,是我笨嘛?一直不知道算法是什么東西。 從《算法導論》再到《C算法》不清楚看了多少遍,它們就是我過不去的坎嗎? 不敢說什么大話,但是我有一個心得 ...
Java面試寶典系列之基礎排序算法 本文就是介紹一些常見的排序算法。排序是一個非常常見的應用場景,很多時候,我們需要根據自己需要排序的數據類型,來自定義排序算法,但是,在這里,我們只介紹這些基礎排序算法,包括:插入排序、選擇排序、冒泡排序、快速排序(重點)、堆排序、歸並排序等等。看下 ...
本文就是介紹一些常見的排序算法。排序是一個非常常見的應用場景,很多時候,我們需要根據自己需要排序的數據類型,來自定義排序算法,但是,在這里,我們只介紹這些基礎排序算法,包括:插入排序、選擇排序、冒泡排序、快速排序(重點)、堆排序、歸並排序等等。看下圖: 給定數組:int data ...
對冒泡、快排、堆排這3個算法做了驗證,結果分析如下: 一、結果分析 時間消耗:快排 < 堆排 < 冒泡。 空間消耗:冒泡O(1) = 堆排O(1) < 快排O(logn)~O(n) 。 應用推薦: 1、速度最快、且允許占用少量的空間:選快排。 2、速度快 ...
常見排序算法總結與實現(冒泡、插入、選擇、希爾、堆排序、歸並、快排) 本文使用Java實現這幾種排序算法。以下是對排序算法總體的介紹。 冒泡排序 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。這步做完后,最后 ...
一、概述: 本文給出常見的幾種排序算法的原理以及java實現,包括常見的簡單排序和高級排序算法,以及其他常用的算法知識。 簡單排序:冒泡排序、選擇排序、插入排序(本篇博客) 高級排序:快速排序、歸並排序、希爾排序(下篇博客) 相關算法知識:划分、遞歸、二分查找(下篇博客 ...