java數(shù)據(jù)結(jié)構(gòu)與算法之奇偶排序算法完整示例
本文實(shí)例講述了java數(shù)據(jù)結(jié)構(gòu)與算法之奇偶排序算法。分享給大家供大家參考,具體如下:
算法思想:
基本思路是奇數(shù)列排一趟序,偶數(shù)列排一趟序,再奇數(shù)排,再偶數(shù)排,直到全部有序
舉例吧,
待排數(shù)組[6 2 4 1 5 9]
第一次比較奇數(shù)列,奇數(shù)列與它的鄰居偶數(shù)列比較,如6和2比,4和1比,5和9比
[6 2 4 1 5 9]
交換后變成
[2 6 1 4 5 9]
第二次比較偶數(shù)列,即6和1比,5和5比
[2 6 1 4 5 9]
交換后變成
[2 1 6 4 5 9]
第三趟又是奇數(shù)列,選擇的是2,6,5分別與它們的鄰居列比較
[2 1 6 4 5 9]
交換后
[1 2 4 6 5 9]
第四趟偶數(shù)列
[1 2 4 6 5 9]
一次交換
[1 2 4 5 6 9]
具體代碼:
public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { int[] numbers = new int[]{12,33,45,33,13,55,34,7,6}; Main.oddEventSort(numbers); for(int i=0; i<numbers.length; i++){ System.out.print(numbers[i]+" "); } } private static void oddEventSort(int[] numbers){ int temp; for(int i=numbers.length-1; i>numbers.length/2-1; i--){ for(int j=1; j<=i; j+=2){ if(j==numbers.length-1)break; if(numbers[j]>numbers[j+1]){ temp = numbers[j]; numbers[j] = numbers[j+1]; numbers[j+1] = temp; } } for(int j=0; j<=i; j+=2){ if(j==numbers.length-1)break; if(numbers[j]>numbers[j+1]){ temp = numbers[j]; numbers[j] = numbers[j+1]; numbers[j+1] = temp; } } } } }
PS:據(jù)說在多核時(shí)代這個(gè)算法比較好用
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
一篇文章教你如何在SpringCloud項(xiàng)目中使用OpenFeign
這篇文章主要介紹了SpringCloud 使用Open feign 優(yōu)化詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-08-08springboot如何使用yml文件方式配置shardingsphere
這篇文章主要介紹了springboot如何使用yml文件方式配置shardingsphere問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Java訪問者模式實(shí)現(xiàn)優(yōu)雅的對象結(jié)構(gòu)處理
Java訪問者模式是一種行為型設(shè)計(jì)模式,它通過將數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作分離,實(shí)現(xiàn)對復(fù)雜對象結(jié)構(gòu)的處理。它將數(shù)據(jù)結(jié)構(gòu)中的每個(gè)元素都轉(zhuǎn)換為訪問者能夠識別的形式,從而使得數(shù)據(jù)操作可以在不影響數(shù)據(jù)結(jié)構(gòu)的前提下進(jìn)行擴(kuò)展和變化2023-04-04springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn)
這篇文章主要介紹了springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Spring與Shiro整合及加載權(quán)限表達(dá)式問題
這篇文章主要介紹了Spring與Shiro整合及加載權(quán)限表達(dá)式問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Springboot容器級后置處理器BeanDefinitionRegistryPostProcessor
這篇文章主要介紹了Springboot容器級后置處理器BeanDefinitionRegistryPostProcessor,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01