• 8.16Java之选择排序算法


    8.16Java之选择排序算法

    过程分析

    每次都从数据中选出最大或最小的元素

    步骤分析

    • 先从全部数据中选出最小的元素,放到第一个元素的位置(选出最小元素和第一位位置交换位置);

    • 然后再从除了第一个元素的剩余元素中再选出最小的元素,然后放到数组的第二个位置上。

    • 循环重复上面的步骤,最终选出来的数据都放前面了,数据就排好序了。

    动图演示

    代码示例

    package PracticeReview.Algorithm;

    /**
    * 选择排序算法演示
    * @since JDK 1.8
    * @date 2021/08/16
    * @author Lucifer
    */
    public class ChooseSort {
       public static void chooseSort(int[] arr){
           //遍历数组索引寻找最小值
           for (int i=0; i<arr.length; i++){
               //设定遍历的值
               int min = i;
               //从i的下一位和i进行比较,如果比i大就将两个值huanweizhi
               for (int j=i+1; j<arr.length; j++){
                   if (arr[j]<arr[min]){
                       //交换二者下标
                       min = j;
                  }
              }
               //如果最小值的下标不等于i了,那么将最小值与i位置的数据替换,即将最小值放到数组前面来,然后循环整个操作。
               if (min!=i){
                   //用的是冒泡排序的思想
                   int temp = arr[i];
                   arr[i] = arr[min];
                   arr[min] = temp;
              }
          }
           //增强for循环读取值
           for (int num : arr){
               System.out.println(num);
          }
      }

       public static void main(String[] args) {
           chooseSort(new int[]{1,3,5,2,7,4,9,8});
      }
    }

    go实现:

    package main

    import "fmt"

    var (
    chooseArray []int
    )

    func main() {
    chooseArray = []int{3,6,7,1,2,5}
    chooseSort(chooseArray)
    }

    func chooseSort(arr []int) {
    for i := 0; i < len(arr); i++ {
    //找到最小值--->这里的i是假设下表i为最小。实际交换的一直是数组下标
    //之所以这样赋值是保证每次循环进来比较的都会从排好序的下一位开始比较
    min := i
    //从i的下一位开始循环和i进行比较
    for j := i+1; j < len(arr); j++ {
    if arr[j] < arr[min] {
    //下标交换
    min = j
    }
    }
    //判断如果最小值!=i了,将最小值与i位置进行数据替换,将最小值放到数组前面来
    if min != i {
    //使用冒泡排序的交换值得方法
    temp := arr[i]
    arr[i] = arr[min]
    arr[min] = temp
    }
    }
    //打印出排序好得值
    for i, j := range arr {
    fmt.Println("索引", i, "得值为:", j)
    }
    }

     

  • 相关阅读:
    2级搭建类203-Oracle 19c SI ASM 静默搭建(OEL7.7)
    2级搭建类EM-Oracle EMCC 13c Release 3 在 OEL 7.7 上的搭建
    1级搭建类112-Oracle 19c SI FS(CentOS 8)
    0级搭建类013-CentOS 8.x 安装
    List添加map,后添加的map覆盖前面的问题
    mysql插入数据报错1366
    oracle ora-12514解决办法
    easyUI 创建详情页dialog
    Server Tomcat v7.0 Server at localhost failed to start.
    maven项目启动报错;class path resource [com/ssm/mapping/] cannot be resolved to URL because it does not exist
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15149550.html
Copyright © 2020-2023  润新知