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