• 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 }


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

  • 相关阅读:
    Python基础学习Day2
    Python基础学习
    字符串
    function对象
    GCN入门理解
    L1、L2正则化详解
    Matplotlib数据可视化基础
    sklearn 中模型保存的两种方法
    一文弄懂神经网络中的反向传播法——BackPropagation
    seaborn可视化
  • 原文地址:https://www.cnblogs.com/qjqj0-0/p/11228407.html
Copyright © 2020-2023  润新知