十大经典排序算法-选择排序

2021-03-03 10:27

阅读:549

标签:pre   图片   依次   选择排序   system   alt   时间复杂度   creat   算法   

一、算法步骤

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。

技术图片

2、时间复杂度

 O(n2) 的时间复杂度

3、代码实现

import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * User: Andrew
 * Date: 2021/02/10
 * Time: 19:49
 * Description: No Description
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = new int[]{3,4,5,7,1,2,0,3,6,8};
        // 排序前数组
        System.out.println(Arrays.toString(arr));
        selectSort(arr);
        // 排序后的数组
        System.out.println(Arrays.toString(arr));
    }
    public static void selectSort(int[] arr){
        // 遍历所有的数
        for (int i = 0; i  arr[j]){
                    // 记录最小的那个数的下标
                    minIndex = j;
                }
            }
            // 如果最小的数和当前遍历的下标不一致,说明下标为minIndex的数比当前遍历的数更小
            if (i != minIndex){
                int temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }
        }
    }
}

 

/**
 * Created with IntelliJ IDEA.
 * User: Andrew
 * Date: 2021/02/10
 * Time: 19:59
 * Description: No Description
 */

/**
 * 选择排序:
 * 本质:
 * 1. 首先选择第 1 个数为最小的数, 然后让这个数和后面所有的数比较,
 * 2、一轮下来找到最小的数, 然后把最小的放在第 1 个位置
 * 3、再选择第 2 个数为第 2 小的数, 再后面逐次比较,.......
 */
object SelectSortDemo {
  def swap(array: Array[Int],index1:Int,index2:Int): Unit ={
    val temp = array(index1)
    array(index1) = array(index2)
    array(index2) = temp
  }

  def main(args: Array[String]): Unit = {
    val array = Array(5, 7, 2, 9, 4, 1, 0, 5, 7)
    println(array.toBuffer)
    selectSortDemo(array)
    println(array.toBuffer)
  }

  def selectSortDemo(arr: Array[Int]): Unit = {
    // 一共 len 个元素, 只需要找到 len-1 个就可以了, 剩下一个位置自动正确
    for (i 

  

 

十大经典排序算法-选择排序

标签:pre   图片   依次   选择排序   system   alt   时间复杂度   creat   算法   

原文地址:https://www.cnblogs.com/andrew037/p/14396546.html


评论


亲,登录后才可以留言!