选择排序是简单排序的一种,其排序思想为:首先将第一个数标记为最大数,其位置为最大数的位置;然后排除第一个数,使用第一个数和剩下的数依次比较,若剩下的数大于第一个数,则继续比较,直到找到最大数为止;最后判断实际最大数的位置是否就是默认最大数的位置,若不是,则用第一个数的位置和最大数的位置进行交换,则此时第一个数就是实际最大数。以此类推,比较剩下的数,得到降序排列;反之为升序排列。
/** 选择降序排序 **/ public static int[] dascSort(int[] param) { int in, out; int max; int temp; for (out = 0; out < param.length; out++) { // 默认最大数的位置 max = out; for (in = out + 1; in < param.length; in++) { if (param[max] < param[in]) { // 获取最大数的位置 max = in; } } // 当默认位置的最大数并不是实际的最大数时,和实际的最大数交换位置 if (out != max) { temp = param[out]; param[out] = param[max]; param[max] = temp; } } return param; }
/** 选择升序排序 **/ public static int[] ascSort(int[] param) { int in, out; int max; int temp; for (out = param.length - 1; out > 0; out--) { // 默认最大数的位置 max = out; for (in = out - 1; in > 0; in--) { if (param[max] < param[in]) { max = in; } } // 当默认位置的最大数并不是实际的最大数时,和实际的最大数交换位置 if (out != max) { temp = param[out]; param[out] = param[max]; param[max] = temp; } } return param; }
执行升序和降序方法: public static void main(String[] args) { int[] param = { 1, 6, 7, 5 }; param = ascSort(param); System.out.print("升序结果为:"); for (int i = 0; i < param.length; i++) { System.out.print(param[i]); } System.out.println(""); param = dascSort(param); System.out.print("降序结果为:"); for (int i = 0; i < param.length; i++) { System.out.print(param[i]); } }
运行结果如下:
注意:
1、选择排序的效率为O(N*N),比较次数最多为N(N-1)/2,交换次数最多为N-1<N,其中N代表需要比较的数的个数;
2、选择排序不稳定
相关推荐
堆排序,堆排序详解升序和降序Java版本 堆排序的思路主要就是建堆和排序两部分组成。堆排序是基于⼆叉树的,那么我们⾸先得知道⼆叉树得基本特性。我们在堆排序中定义这样⼀种完整⼆叉树,其中每个结点的值都⼤于...
优先队列-java可以选择属性和升序降序
1.对int数组进行排序,sortAsc 升序,sortDesc降序 2.创建main函数,声明一个int数组,随机写入一些数字 3.sortAsc进行升序排列 4.使用双重for循环进行排序,当第一个数字大于第二个数字, 则交换位置 5.sortDesc则...
主要介绍了java 实现Comparable接口排序,升序、降序、倒叙,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
最近自己无聊编了一个java的冒泡排序,欢迎查看
2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,并说明两个方案的优缺点
JAVA 键盘录入学生成绩,排序后输出,set中自定义排序规则。
然后,使用合并,插入或选择排序算法,按请求的升序或降序对集合重新排序。 作者:Briana Berger 日期:4/10/2018 我学到的东西:我学习了如何一起使用合并,选择和插入排序来订购商店的产品。 我喜欢的东西:我...
2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,并说明两个方案的优缺点 6.提交设计报告,...
Java排序算法实现资源 这个资源是关于Java中排序算法实现的简单示例。排序算法是计算机科学中的基础概念,用于按升序或降序排列数据集。这里提供了两种常见的排序算法实现:冒泡排序和选择排序。 冒泡排序(Bubble ...
minimum-Swaps-Array-Solution:这是我对经典问题的解决方案,该问题确定将数组按升序或降序排列的最小交换次数
数组排序对数组排序(偶数项降序\奇数项升序)
基于eclipse平台开发的Java学生成绩管理系统,在实现了学生成绩的增删改查的基础上添加了一些其他额外的功能,如可以对学生的各科成绩和总分分别进行升序或者降序排列,可以按照学号和姓名对学生进行查询,操作完毕...
java中按找对象的某个属性进行升序降序的排序
Map是Java中最天才的设计,使用起来也很灵活,该类总结了Map通过key和value进行升序和降序排序,Map的两种遍历的公共方法以及上面功能的测试方法
功能最全的----java学生成绩管理系统 具有 增加,删除,查找(按不同属性的查找),排序(升序,降序),存储,读取,纠错,退出等功能
java 实现的图形化学籍管理系统,实现增删改查,升序,降序,排序,模糊查找,最高分,最低分统计,文件存取
java实现包括插入排序、冒泡排序和快速排序算法。可以对任何简单类型和任意对象进行排序,可以支持升序、降序等多种顺序要求。用面向对象的思想,多继承实现各种排序方法,代码简单易用,附带uml图解
如果顺序(根据升序或降序排列)错误就把它们交换过来。这样,每进行一轮比较和交换操作,就会有一个元素被放置到其最终位置上,这个过程像气泡一样上浮到数组的顶端。随后,算法再从头开始,重复之前的比较和交换...
基于java+控制台+TXT文本实现学生成绩管理系统...(6)升序/降序排序学生各门功课成绩 (7)统计学生成绩 (8)IO流形成文件保存/读入学生成绩 详见:https://blog.csdn.net/Timi2019/article/details/128351011