總結(jié)Java常用排序算法
排序算法常用的有冒泡排序,選擇排序和插入排序,下面將用Java語(yǔ)言實(shí)現(xiàn)這三種排序方式,并且介紹一種由插入排序拓展出來(lái)的希爾排序。
1、冒泡排序(BubbleSort)是一種最簡(jiǎn)單的排序算法。它的基本思想是迭代地對(duì)輸入序列的第一個(gè)元素到最后一個(gè)元素進(jìn)行倆倆比較,當(dāng)滿足條件時(shí)交換這倆個(gè)元素的位置,該過(guò)程持續(xù)到不需要執(zhí)行上述過(guò)程的條件時(shí)。

2、我們自定義一個(gè)排序的函數(shù)為sorter(int[]array);
private static void sorter(int[] array) for(int i=0;i<array.length-1;i++) { for(int j=0;j<array.length-i-1;j++) { if(array[j]>array[j+1]) { int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } }
完整代碼如下圖:

3、運(yùn)行結(jié)果如下:

1、選擇排序
選擇排序(SelectSort)是一種原地(in-place)排序算法,適用于小文件。選擇排序是基于鍵值并且交換是發(fā)生在需要交換時(shí)才執(zhí)行,所以選擇排序常用于數(shù)值較大和鍵值較小文件。

2、
private static void sorter(int[] array) for(int i=0;i<array.length-1;i++) { int index = i; for(int j=index;j<array.length-1;j++) { if(array[index]>array[j+1]) { index = j+1; } } int temp = array[index]; array[index] = array[i]; array[i] = temp; } }

3、運(yùn)行結(jié)果

1、插入排序
插入排序(InsertionSort)是一種簡(jiǎn)單且有效的比較排序算法,在每次迭代過(guò)程中算法隨機(jī)的從輸入序列中移除一個(gè)元素,并將該元素插入到排序序列中正確的位置,重復(fù)該過(guò)程,知道所有元素都被選擇一次。

2、
private static void sorter(int[] array) for(int i=1;i<array.length;i++) { int temp = array[i]; int j = i; while(j>0&&temp<array[j-1]) { array[j] = array[j-1]; j--; } array[j] = temp; } }

3、運(yùn)行結(jié)果

1、希爾排序
希爾排序(ShellSort)又稱縮小增量排序,該算法是一個(gè)泛化的插入排序。

2、
public static void sorter(int[]array) { for(int gap=array.length/2;gap>0;gap/=2) { for(int i=gap;i<array.length;i++) { int temp = array[i]; int j = i; if(array[j]<array[j-1]) { while(j-gap>=0&&temp<array[j-gap]) { array[j] = array[j-gap]; j-=gap; } array[j] = temp; } } } }

3、運(yùn)行結(jié)果

相關(guān)文章
SpringBoot ThreadLocal 簡(jiǎn)單介紹及使用詳解
ThreadLocal 叫做線程變量,意思是 ThreadLocal 中填充的變量屬于當(dāng)前線程,該變量對(duì)其他線程而言是隔離的,也就是說(shuō)該變量是當(dāng)前線程獨(dú)有的變量,這篇文章主要介紹了SpringBoot ThreadLocal 的詳解,需要的朋友可以參考下2024-01-01
maven中resource配置的實(shí)現(xiàn)示例
我們?cè)谑褂肕aven組件來(lái)構(gòu)建項(xiàng)目的時(shí)候,通常將配置文件放在資源文件目錄下,本文主要介紹了maven中resource配置的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
劍指Offer之Java算法習(xí)題精講數(shù)組與字符串
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03
java實(shí)現(xiàn)分布式項(xiàng)目搭建的方法
這篇文章主要介紹了java實(shí)現(xiàn)分布式項(xiàng)目搭建的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
解決spring boot 1.5.4 配置多數(shù)據(jù)源的問(wèn)題
下面小編就為大家?guī)?lái)一篇解決spring boot 1.5.4 配置多數(shù)據(jù)源的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06

