Java之Algorithm_analysis案例詳解
/* 冒泡排序:雙層循環(huán) 1.外層循環(huán):控制排序輪數(shù),排序數(shù)組長度減1(最后一次循環(huán)只剩下一個元素,不需要比較,同時數(shù)組已完成排序。 2.內(nèi)層循環(huán):比較數(shù)組臨近元素大小,確定是否交換位置,對比和交換次數(shù)隨排序輪數(shù)而減少。 */
public class BubbleSort { public void sort(int[] array){ for(int i=1;i<array.length;i++){//控制輪數(shù) //比較相鄰兩個元素,較大的數(shù)往后冒泡 for(int j=0;j<array.length-i;j++){//控制交換次數(shù) if(array[j]>array[j+1]){//第一個數(shù)大于第二個數(shù),進行交換 int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; System.out.println("第-------"+j+"-------次"); } System.out.println("第"+i+"輪"); showArray(array); } } showArray(array); } /* 顯示數(shù)組 */ public void showArray(int[] array){ for(int i:array){//遍歷數(shù)組 System.out.print(" 》"+i); } System.out.println(); } public static void main(String[] args) { //創(chuàng)建一個數(shù)組,這個數(shù)組元素是亂序的 int[] array = {63,4,24,1,3,15}; System.out.println("數(shù)組長度:"+array.length); System.out.println("========================="); //創(chuàng)建冒泡排序類對象 BubbleSort sorter = new BubbleSort(); //調(diào)用排序方法將數(shù)組排序 sorter.sort(array); }
顯示結(jié)果
數(shù)組長度:6
=========================
第-------0-------次
第1輪
》4 》63 》24 》1 》3 》15
第-------1-------次
第1輪
》4 》24 》63 》1 》3 》15
第-------2-------次
第1輪
》4 》24 》1 》63 》3 》15
第-------3-------次
第1輪
》4 》24 》1 》3 》63 》15
第-------4-------次
第1輪
》4 》24 》1 》3 》15 》63
第2輪
》4 》24 》1 》3 》15 》63
第-------1-------次
第2輪
》4 》1 》24 》3 》15 》63
第-------2-------次
第2輪
》4 》1 》3 》24 》15 》63
第-------3-------次
第2輪
》4 》1 》3 》15 》24 》63
第-------0-------次
第3輪
》1 》4 》3 》15 》24 》63
第-------1-------次
第3輪
》1 》3 》4 》15 》24 》63
第3輪
》1 》3 》4 》15 》24 》63
第4輪
》1 》3 》4 》15 》24 》63
第4輪
》1 》3 》4 》15 》24 》63
第5輪
》1 》3 》4 》15 》24 》63
》1 》3 》4 》15 》24 》63
/*直接選擇排序:指定排序位置與其他元素比較。交換次數(shù)減少。*/
public class SelectSort { public void sort(int[] array) { int index; for (int i = 1; i < array.length; i++) { index = 0; for (int j = 1; j <= array.length - i; j++) if (array[j] > array[index]) { index = j; } //交換位置array.length-i和index(最大值)上的兩個數(shù) int temp = array[array.length-i]; array[array.length - i] = array[index]; array[index] = temp; } showArray(array); } /* 顯示數(shù)組 */ public void showArray(int[] array) { for (int i : array) {//遍歷數(shù)組 System.out.print(" 》" + i); } System.out.println(); } public static void main(String[] args) { //創(chuàng)建一個數(shù)組,這個數(shù)組元素是亂序的 int[] array = {63, 4, 24, 1, 3, 15}; System.out.println("數(shù)組長度:" + array.length); System.out.println("========================="); //創(chuàng)建冒泡排序類對象 SelectSort sorter = new SelectSort(); //調(diào)用排序方法將數(shù)組排序 sorter.sort(array); } }
運行結(jié)果:
數(shù)組長度:6
=========================
》1 》3 》4 》15 》24 》63
到此這篇關(guān)于Java之Algorithm_analysis案例詳解的文章就介紹到這了,更多相關(guān)Java之Algorithm_analysis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實例分享
這篇文章主要介紹了Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實例,有需要的朋友可以參考一下2014-01-01MyBatis-Plus MetaObjectHandler的原理及使用
MyBatis-Plus的MetaObjectHandler接口允許開發(fā)者自動填充實體類字段,如創(chuàng)建時間、更新時間等公共字段,減少代碼重復,提高數(shù)據(jù)一致性和完整性,感興趣的可以了解一下2024-10-10Java線程的創(chuàng)建介紹及實現(xiàn)方式示例
這篇文章主要為大家介紹了Java線程的創(chuàng)建介紹及實現(xiàn)方式示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09一篇文章帶你入門Java數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了Java常見數(shù)據(jù)結(jié)構(gòu)面試題,帶有答案及解釋,希望對廣大的程序愛好者有所幫助,同時祝大家有一個好成績,需要的朋友可以參考下,希望可以幫助到你2021-08-08