資源描述:
《java排序算法匯總大全》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、package?com.softeem.jbs.lesson4;????import?java.util.Random;????/**???*?排序測(cè)試類???*????*?排序算法的分類如下:???*?1.插入排序(直接插入排序、折半插入排序、希爾排序);???*?2.交換排序(冒泡泡排序、快速排序);???*?3.選擇排序(直接選擇排序、堆排序);???*?4.歸并排序;???*?5.基數(shù)排序。???*????*?關(guān)于排序方法的選擇:???*?(1)若n較小(如n≤50),可采用直接插入或直接選擇排序。???*? 當(dāng)記錄規(guī)模較小時(shí),直接插入排序較好;否則因?yàn)橹苯舆x擇移動(dòng)的記錄數(shù)少于直接插
2、人,應(yīng)選直接選擇排序?yàn)橐恕???*?(2)若文件初始狀態(tài)基本有序(指正序),則應(yīng)選用直接插人、冒泡或隨機(jī)的快速排序?yàn)橐耍???*?(3)若n較大,則應(yīng)采用時(shí)間復(fù)雜度為O(nlgn)的排序方法:快速排序、堆排序或歸并排序。???*????*/????public?class?SortTest?{????????????????/**??????????*?初始化測(cè)試數(shù)組的方法??????????*?@return?一個(gè)初始化好的數(shù)組??????????*/???????????public?int[]?createArray()?{??????????????????Random?random
3、?=?new?Random();??????????????????int[]?array?=?new?int[10];??????????????????for?(int?i?=?0;?i?10;?i++)?{?????????????????????????array[i]?=?random.nextInt(100)?-?random.nextInt(100);//生成兩個(gè)隨機(jī)數(shù)相減,保證生成的數(shù)中有負(fù)數(shù)??????????????????}??????????????????System.out.println("==========原始序列==========");???????
4、???????????printArray(array);??????????????????return?array;???????????}????????????????/**??????????*?打印數(shù)組中的元素到控制臺(tái)??????????*?@param?source??????????*/???????????public?void?printArray(int[]?data)?{??????????????????for?(int?i?:?data)?{?????????????????????????System.out.print(i?+?"?");???????????
5、???????}??????????????????System.out.println();???????????}????????????????/**??????????*?交換數(shù)組中指定的兩元素的位置??????????*?@param?data??????????*?@param?x??????????*?@param?y??????????*/???????????private?void?swap(int[]?data,?int?x,?int?y)?{??????????????????int?temp?=?data[x];??????????????????data[x]?=
6、?data[y];??????????????????data[y]?=?temp;???????????}????????????????/**??????????*?冒泡排序----交換排序的一種??????????*?方法:相鄰兩元素進(jìn)行比較,如有需要?jiǎng)t進(jìn)行交換,每完成一次循環(huán)就將最大元素排在最后(如從小到大排序),下一次循環(huán)是將其他的數(shù)進(jìn)行類似操作。???????????*?性能:比較次數(shù)O(n^2),n^2/2;交換次數(shù)O(n^2),n^2/4??????????*???????????*?@param?data?要排序的數(shù)組??????????*?@param?sortType?
7、排序類型??????????*?@return??????????*/???????????public?void?bubbleSort(int[]?data,?String?sortType)?{??????????????????if?(sortType.equals("asc"))?{?//正排序,從小排到大?????????????????????????//比較的輪數(shù)????????????????