總結(jié)Java常用排序算法
排序算法常用的有冒泡排序,選擇排序和插入排序,下面將用Java語言實現(xiàn)這三種排序方式,并且介紹一種由插入排序拓展出來的希爾排序。
1、冒泡排序(BubbleSort)是一種最簡單的排序算法。它的基本思想是迭代地對輸入序列的第一個元素到最后一個元素進行倆倆比較,當(dāng)滿足條件時交換這倆個元素的位置,該過程持續(xù)到不需要執(zhí)行上述過程的條件時。
2、我們自定義一個排序的函數(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、運行結(jié)果如下:
1、選擇排序
選擇排序(SelectSort)是一種原地(in-place)排序算法,適用于小文件。選擇排序是基于鍵值并且交換是發(fā)生在需要交換時才執(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、運行結(jié)果
1、插入排序
插入排序(InsertionSort)是一種簡單且有效的比較排序算法,在每次迭代過程中算法隨機的從輸入序列中移除一個元素,并將該元素插入到排序序列中正確的位置,重復(fù)該過程,知道所有元素都被選擇一次。
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、運行結(jié)果
1、希爾排序
希爾排序(ShellSort)又稱縮小增量排序,該算法是一個泛化的插入排序。
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、運行結(jié)果
相關(guān)文章
SpringBoot ThreadLocal 簡單介紹及使用詳解
ThreadLocal 叫做線程變量,意思是 ThreadLocal 中填充的變量屬于當(dāng)前線程,該變量對其他線程而言是隔離的,也就是說該變量是當(dāng)前線程獨有的變量,這篇文章主要介紹了SpringBoot ThreadLocal 的詳解,需要的朋友可以參考下2024-01-01劍指Offer之Java算法習(xí)題精講數(shù)組與字符串
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03解決spring boot 1.5.4 配置多數(shù)據(jù)源的問題
下面小編就為大家?guī)硪黄鉀Qspring boot 1.5.4 配置多數(shù)據(jù)源的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06