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 }


可能我潜意识里就觉得选择排序法思路更清晰一些吧……好像执行速度还挺短的,以后也会多进行这样的小练习。

 

你可能感兴趣的:(java:选择排序法对数组排序)