剛剛找到工作,但是發現自己雖然對資料結構的知識了解原理,但是實現的話,仍然有很大的麻煩。決定在大學的最後幾個月對資料結構進行乙個系統的詳細的學習。好了,第一篇:快速排序的演算法。由於我只是想實現乙個簡單的原理,所以類的構造就比較簡單了,比較的原型都死int型的。
快速的排序的定義我不說了,直接貼源**:
public class basequicksort implements quicksortexecutor
quicksort(0,arrays.length - 1);
}private void quicksort(int low,int high)
}else if(position == begin)
else}}
if(low < position - 1)
quicksort(low, position - 1);
if(position + 1 < high)
quicksort(position + 1,high);
}public int getarrays()
public void setarrays(int arrays)
public static void main(string args) ;
sort.setarrays(arrays);
sort.executor();
for(int i = 0;i< arrays.length ;i++)
}}
這個的實現是使用的是遞迴結構,所以說還是比較簡單的。下面是乙個實現了不使用系統的遞迴函式,自己定義的乙個棧,用來排序,也是快速排序的演算法實現:
最後的main函式裡面,我對演算法進行了測試,發現,快速演算法確實比冒泡演算法實現快多了,
之所以不設定太多的隨機數排序,是因為在冒泡演算法的執行效率實在是太低了,在這個演算法的測試中,我的冒泡演算法的時間通常達到34秒,但是快速排序卻是15ms,差距很大啊。
這個測試中,如果僅僅是區別快速排序的兩種實現的話,我們可以發現,快速排序的遞迴函式的時間消耗是小於我們自己寫的不是遞迴的構造快速排序演算法。但是在十萬的資料一下,二者的時間是相同的。只是在百萬的資料量下,才能顯示是也是微小的時間差距。
好了,快速排序寫完了
Java實現演算法之快速排序
本文參考了 總的說來,要直接默寫出快速排序還是有一定難度的,因為本人就自己的理解對快速排序作了下白話解釋,希望對大家理解有幫助,達到 快速排序,快速搞定。快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquer...
演算法實現Java之快速排序
package com.gpf.arithmetic public class quicksort system.out.println 排序前 for int i array quicksort array,0 array.length 1 system.out.println n排序後 for ...
排序演算法 快速排序的Java實現
所謂快速排序 基於分治的思想,是氣泡排序的改進型。首先在陣列中選擇乙個基準點並把基準點放於序列的開頭 該基準點的選取可能影響快速排序的效率,關於基準點的選擇方法後面再講解 然後分別從陣列的兩端掃瞄陣列,設兩個指示標誌 lo指向起始位置,hi指向末尾 首先從後半部分開始,如果發現有元素比該基準點的值小...