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

     

  • 相关阅读:
    GridView控件使用参考示例
    基于.NET三种Ajax技术的运用——原生js、ASP.NET Ajax和.NET回调技术
    使用原生javascript创建通用表单验证 —— 更锋利的使用dom对象
    序列化与反序列化一个集合
    如何在.net MVC1.0中post一个实体对象和集合对象
    搭建SharePoint开发环境——如何在Win7安装SharePointFoundation
    解决Web Part出现“/”应用程序中的服务器错误
    何时使用泛型
    TRUNCATE TABLE
    【转】实例讲解override和new的区别
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15149550.html
Copyright © 2020-2023  润新知