选择排序复习

Posted 小智RE0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序复习相关的知识,希望对你有一定的参考价值。

基本思想,先找到当前元素之后的数组中最小的元素,和当前元素交换位置即可.

练习:912. 排序数组
直接思想暴力法;

class Solution 
    public int[] sortArray(int[] nums) 
        //基本选择排序做法;
        //数组的长度;
        int n = nums.length;
        for(int i =0;i<n-1;i++)
            //初始定义当前的最小数位置;
            int minNum = i;
            //循环之后的元素找到最小元素;
            for(int j =i+1;j<n;j++)
                if(nums[j]<nums[minNum])
                    minNum = j;
                
            
            //交换当前元素与最小元素位置;
            swap(nums,i,minNum);
        
        return nums;
    

    //交换方法;
    private void swap(int[] nums,int a,int b)
        //简单的临时变量交换法;
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] = temp;
    

基本思想没有问题,但是超时

简单优化

class Solution 
    public int[] sortArray(int[] nums) 
      int n = nums.length;
      for(int i=0;i<n-1;i++)
          //假设定义的最小值;
          int minVal = nums[i];
          //最小值索引;
          int minIndex = i;
          //在后面的数组元素中查询;
          for(int j=i+1;j<n;j++)
              if(nums[j]<minVal)
                  //索引以及值改变;
                  minVal = nums[j];
                  minIndex = j;
              
          
          //交换当前数和最小值;
          nums[minIndex] = nums[i];
          nums[i] = minVal;
      
      return nums;
    

实际效率也并不好,建议使用其他的排序算法


以上是关于选择排序复习的主要内容,如果未能解决你的问题,请参考以下文章

2023数据结构考研复习-排序

经典算法复习快速排序的应用

数据结构(复习排序算法)——选泡插(选择,冒泡,插入,希尔)

go-数据结构与算法 复习

2021-8-5 复习排序算法

[复习]快速排序