• 技术文章 >Java >java教程

    java数据结构排序算法(3)简单选择排序

    零下一度零下一度2017-05-31 09:31:53原创729
    这篇文章主要介绍了java数据结构与算法之简单选择排序,结合实例形式分析了选择排序的原理、实现方法与相关操作技巧,需要的朋友可以参考下

    本文实例讲述了java数据结构与算法之简单选择排序。分享给大家供大家参考,具体如下:

    在前面的文章中已经讲述了交换类的排序算法,这节中开始说说选择类的排序算法了,首先来看一下选择排序的算法思想;

    选择排序的基本算法思想:

    每一趟在 n-i+1 (i=1,2,3,……,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

    简单选择排序:

    设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。

    算法实现代码如下:

    package exp_sort;
    public class SimpleSelectSort {
      static int i;
      static int temp;
      public static void selectSort(int array[]) {
        for (i = 0; i < array.length; i++) {
          int k = i;  //记录当前位置
          for (int j = i + 1; j < array.length; j++) {
            if (array[j] < array[k]) {   //找出最小的数,并用k指向最小数的位置
              k = j;
            }
          }
                //交换最小数array[k]与第i位上的数
          if (k != i) {
            temp = array[i];
            array[i] = array[k];
            array[k] = temp;
          }
        }
      }
      public static void main(String[] args) {
        // TODO Auto-generated method stub
        int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 };
        selectSort(array);
        for (int i = 0; i < array.length; i++) {
          System.out.print(array[i] + " ");
        }
        System.out.println("\n");
      }
    }

    算法分析:

    在此排序过程中,需要移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录;最坏情况下,即待排序记录初始状态是按照逆序排列的,则需要移动次数最多是:3(n-1)。排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况无关。当i=1时,需要进行n-1次比较;当i=n时,共需要进行的比较次数是:n(n-1)/2,即比较操作的时间复杂度是:O(n^2),进行移动操作的时间复杂度为O(n);该排序是不稳定排序

    【相关推荐】

    1. java数据结构排序算法(1)树形选择排序

    2. java数据结构排序算法(2)归并排序

    3. 详解Java中选择排序 (Selection Sort_java)的实例教程

    4. java数据结构排序算法(4)选择排序

    以上就是java数据结构排序算法(3)简单选择排序的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:java数据结构排序算法(1)树形选择排序 下一篇:java数据结构排序算法(4)选择排序
    Web大前端开发直播班

    相关文章推荐

    • JAVA详细解析之IO流、File、字节流以及字符流• 完全掌握Java单例模式• 图文详解!java中锁的整理总结• JAVA学习IO操作之字节流和字符流(总结分享)• JAVA面向对象之继承、构造方法、重写和重载(总结分享)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网