zoukankan      html  css  js  c++  java
  • 十大经典算法选择排序(java版本)

    1.实现逻辑

    • <1>.初始状态:无序区为R[1..n],有序区为空;
    • <2>.第i趟排序(i=1,2,3...n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序 从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
    • <3>.n-1趟结束,数组有序化了。

    2.代码实现

    public class SelectSort {
        public static void main(String[] args) {
                int a[] = {6,3,1,2};
                int b[] = selectsort(a);
                for (int k=0;k< b.length;k++){
                    System.out.println(b[k]);
                }
        }
        //基本的选择排序
        public static int [] selectsort(int a[]){
            //初始最大值位置
            int maxpos = 0;
            for(int i=0;i<a.length-1;i++){
                maxpos = 0;
                for(int j=0;j<a.length-i-1;j++){
                    if(a[j]>a[maxpos]){
                        maxpos = j;
                    }
                }
                if(maxpos != a.length-i-1){
                    //交换两个数大小
    //                int tmp = a[a.length-i-1];
    //                a[a.length-i-1] = a[maxpos];
    //                a[maxpos] = tmp;
                    change(a,maxpos,a.length-i-1);
    
                }
            }
            return a;
        }
        //交换两个数大小
        //值传递 引用传递
        public  static  void change(int [] arr,int indexI,int indexJ){
            int temp = arr[indexI];
            arr[indexI] = arr[indexJ];
            arr[indexJ] = temp;
        }
    }

    3.时间复杂度

    • 最佳情况:T(n) = O(n2)
    • 最差情况:T(n) = O(n2)
    • 平均情况:T(n) = O(n2)

     

    非学无以广才,非志无以成学。 正是因为今天的不完美,才对未来充满希望。 ----长帆
  • 相关阅读:
    下载及爬取网页内容
    对于for循环的理解
    记录安装fiddle出现的问题
    Django
    12种可以参考的思路关于代码能干什么
    “字符文本中字符太多”错误及解决方法
    jQuery参考:jquery中的$(document).ready()与window.onload的区别
    页面定时刷新功能实现
    HTML:关于位置的几个概念
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/changfan/p/15609905.html
Copyright © 2011-2022 走看看