首页 > 编程语言 > 详细

排序-选择排序

时间:2019-03-01 22:35:28      阅读:148      评论:0      收藏:0      [点我收藏+]

思想

每一次遍历待排序的序列,记录最小(大)值的下标,和待排序第一个元素进行比较,如果小(大)与待排序第一个元素,交换

实现(java)

/**
 * @Author: fanjiajia
 * @Date: 2019/3/1 下午9:05
 * @Version: 1.0
 * @Description:选择排序
 */
public class Main {

    public  static void main(String[] args) {

        int[] arr = {2,5,4,3,8,6,4};
        selectSort(arr);
        for (int i = 0; i< arr.length; i++){
            System.out.print(arr[i] + ",");
        }
    }

    /**
     * 选择排序
     * @param arr
     */
    private static void selectSort(int[] arr) {
        for (int i = 0,k =0; i < arr.length; i++, k = i){
            // 这一层查找后面最小值的下标
            for (int j = i+1; j <arr.length; j++) {
                if (arr[k] > arr[j]) {  // 这个改为小与符合即为从大到小
                    k = j;
                }
            }
            // 交换值
            if( i != k) {
                int temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
    }
}

分析

  • 时间复杂度:$O(N^2)$
  • 空间复杂度: $O(1)$
  • 稳定性: 不稳定

排序-选择排序

原文:https://www.cnblogs.com/numen-fan/p/10458904.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!