java:選擇排序法對數組排序


最近想練一練Java的算法,然后碰到LeetCode上一道從排序數組刪除重復項的小題,剛開始沒看到是從排序數組中,就亂寫,其實要是排序樹組,就比亂序的感覺上好寫多了。然后就想回顧下冒泡法對數組排序,憑感覺寫的,寫到最后成了選擇排序……呃……

簡單對冒泡法和選擇排序法介紹一下。

冒泡法是兩兩比較,兩兩交換,逐漸的把最大的弄到最后(最前),最小的弄到最前(最后)。網上有很多例子。

而選擇排序法是每次都選出最小的放到最前(最后),然后再從剩下的數里面選出里面最小的再放到第二位(倒數第二位)。

 1 public class Solution {
 2     public static void main(String[] args) {
 3         int[] nums = {10, 12, 6, 4, 8, 3, 7, 23, 65, 12};
 4         for (int i = 0; i < nums.length; i++) {           //第一個for循環
 5             int n = nums[i], a = i, change;        //定義第二個for循環需要用的東西
 6             for (int j = i; j < nums.length - 1; j++) {   //每次都讓j=i,想要做的是在第i個以及以后選擇最小的放到第i位
 7                 if (nums[j + 1] < n) {                    //如果下一個比n小,就讓n等於下一個,for循環結束時n就是最小的
 8                     n = nums[j + 1];
 9                 }
10                 for (int x = 0; x < nums.length; x++) {   //這個for循環的作用是找到最小的那一位數並用a記錄
11                     if (n == nums[x]) {
12                         a = x;
13                     }
14                 }                                         //內for結束
15             }                                             //外for結束
16             change = nums[i];                             //把最小的和第一位交換
17             nums[i] = nums[a];
18             nums[a] = change;
19         }  
20         for (int x : nums) {                              //foreach輸出數組
21             System.out.print(" " + x);
22         }
23 
24     }
25 }


可能我潛意識里就覺得選擇排序法思路更清晰一些吧……好像執行速度還挺短的,以后也會多進行這樣的小練習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM