zoukankan      html  css  js  c++  java
  • java方式实现选择排序

    一、基本思想

           每一趟找到未排序序列的最小(大)值,把它存放在已排序序列末尾,直到把所有的数据排序完,即是第k趟找到剩余未排序数据的最小(大)值,然后把这个最小(大)值存放在数组的第k(k=1,2...n)位置(对应数组元素下标为k-1),直到把所有的数据排序完,一共需要进行n-1趟(n表示数组的长度),每一趟进行n-k次比较,找到该趟的最小值,比较总次数位n (n- 1) / 2次,所以时间复杂度位O(n2)。空间复杂度为O(1)。

    二、实现步骤

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

    三、图解

    四、代码展示

    public class JavaSort {
        public static void main(String[] args) {

          int a [] =new int []{1,5,4,10,6,29,5,20};
          System.out.println("排序前的数组:"+Arrays.toString(a));
          selectSort(a);
          System.out.println("排序后的数组:"+Arrays.toString(a));

        }
        /**
         * 选择排序简单原理:总共进行n-1趟(n表示数组长度),第k趟找出该趟最小的数据,存放在数组下标为k-1位置
         * @param ary 要排序的数组
         * @return 返回排序好的数组
         */
        public static int [] selectSort(int [] ary) {
            for (int i = 0; i < ary.length-1; i++) {//进行n-1趟
                int min=i;//每趟最小值所在位置
                for (int d = i+1; d < ary.length; d++) {//第k趟进行n-k次比较k=i-1)
                    if(ary[min]>ary[d]) {
                        min=d;//找到每一趟最小值所在的位置
                    }
                }
                int temp=ary[i];//将i下标(i下标对应i+1趟)所对应的元素与每趟最小值交换
                ary[i]=ary[min];
                ary[min]=temp;        
            }
            return ary;
        }
    }

    运行截图:

     

        

  • 相关阅读:
    Oracle Day2
    Orcale Day1
    JavaSE 单例模式
    C#Windows 服务的安装说明
    Json转Hashtable的转换
    将汉字转为拼音
    游标 的使用
    C#后台画图保存为ipg/png的文件
    T-sql 查询
    EF简单的添加修改删除基本语法
  • 原文地址:https://www.cnblogs.com/shareAndStudy/p/12446061.html
Copyright © 2011-2022 走看看