摘要:接下來我來說明快速排序的思路以及實現的代碼。快速排序思路首先是定義一個變量,把數組的第一個元素的值賦給,然后定義兩個變量指向數組的第一個元素和最后一個元素。
今天突然想寫個排序,以前寫過,然后寫了之后一直出錯,然后自己百度了一下,看了別人寫的方法,自己也嘗試著寫了一個。接下來我來說明快速排序的思路以及實現的代碼。
快速排序思路:首先是定義一個變量key,把數組的第一個元素的值賦給key,然后定義兩個變量start,end指向數組的第一個元素和最后一個元素。然后從后往前遍歷,一直end--,知道下標為end的值小于key,就交換下標為start,end的值,然后再從前遍歷,一直start++,直到下標為start的值大于key,就交換下標為start,end的值。這樣,經過一次排序之后,小于key的出現在key的左邊,大于key的出現在key的右邊。然后再用遞歸對key的左右兩邊進行上述方法進行排序。
快速排序
代碼:
//判斷數組是否為空,數組元素是否為0 if (data.length < 1 || data == null) { return; } //頭指針小于尾指針,則返回 if (start >= end) { return; } //數組不為空且元素個數大于0 boolean flag = true; int low = start; int high = end; int key = data[low]; while (low < high) { //flag用來判斷是否從下標為high的值與基準進行比較 if (flag) { if (data[high] < key) { swmp(data, low, high); flag = false; } else { high--; } } else { //判斷下標為low的值是否與基準進行比較。 if (data[low] > key) { swmp(data, low, high); flag = true; } else { low++; } } } soft_quick(data, start, low - 1); soft_quick(data, high + 1, end); int temp = data[start]; data[start] = data[end]; data[end] = temp; for (int index : data) { System.out.print(index + " "); } System.out.println();
最后是運行結果:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65911.html
摘要:結構型模式適配器模式橋接模式裝飾模式組合模式外觀模式享元模式代理模式。行為型模式模版方法模式命令模式迭代器模式觀察者模式中介者模式備忘錄模式解釋器模式模式狀態模式策略模式職責鏈模式責任鏈模式訪問者模式。 主要版本 更新時間 備注 v1.0 2015-08-01 首次發布 v1.1 2018-03-12 增加新技術知識、完善知識體系 v2.0 2019-02-19 結構...
摘要:強烈推薦上值得前端學習的數據結構與算法項目,包含圖的演示過程與視頻講解。該倉庫包含了多種基于的算法與數據結構,提供進一步閱讀的解釋和鏈接。數據結構和算法必知必會的個代碼實現。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法為王。想學好前端,先練好內功,內功不行,就算招式練的再花哨,終究成不了高手;只有內功深厚者,前端之路才會走得...
摘要:可見快速排序不是穩定的排序。在這種小數組的情況下,其實一些基礎排序算法反而比快速排序要快。當一個數組為無序并且重復元素不多時候,也適合快速排序。 分治思想 關于排序,江湖盛傳有一種分治思想,能大幅度提高排序心法的性能。所謂分治,即:化大為小,分而治之。達到治小而治大的成效。多年來基于分治思想衍生出多種排序心法,然萬變不離其宗!雖然江湖上算法內功繁多,但是好的算法小編認為必須符合以下幾...
摘要:可見快速排序不是穩定的排序。在這種小數組的情況下,其實一些基礎排序算法反而比快速排序要快。當一個數組為無序并且重復元素不多時候,也適合快速排序。 分治思想 關于排序,江湖盛傳有一種分治思想,能大幅度提高排序心法的性能。所謂分治,即:化大為小,分而治之。達到治小而治大的成效。多年來基于分治思想衍生出多種排序心法,然萬變不離其宗!雖然江湖上算法內功繁多,但是好的算法小編認為必須符合以下幾...
閱讀 2696·2021-09-22 15:58
閱讀 2238·2019-08-29 16:06
閱讀 906·2019-08-29 14:14
閱讀 2815·2019-08-29 13:48
閱讀 2459·2019-08-28 18:01
閱讀 1504·2019-08-28 17:52
閱讀 3328·2019-08-26 14:05
閱讀 1622·2019-08-26 13:50