排序——选择排序之直接选择排序
来源:互联网 发布:淘宝手机充值怎么退款 编辑:程序博客网 时间:2024/05/27 09:45
直接选择排序(StraightSelectSort)算法思想:
第一趟从n个元素的数据序列中选出关键字最小/大的元素并放到最前/后位置,下一趟再从n-1个元素中选出最小/大的元素并放到次前/后位置,以此类推,经过n-1趟完成排序。
代码实现如下:
package g;
public class StraightSelectSort {
public static int[] randomInt(int n, int size) {
int[] value = new int[n];
for (int i = 0; i < value.length; i++) {
value[i] = (int) (Math.random() * size);
}
return value;
}
public static void print(int[] value) {
for (int i : value) {
System.out.print(i + " ");
}
}
// 交换元素keys[i]与keys[j]元素,i、j范围由调用者控制
public static void swap(int[] keys, int i, int j) {
int temp = keys[i];
keys[i] = keys[j];
keys[j] = temp;
}
// 直接选择排序(升序)
public static void selectSort(int[] keys) {
// n-1趟排序
for (int i = 0; i < keys.length - 1; i++) {
int min = i;
// 每趟再从keys[i]开始的子序列中寻找最小元素
for (int j = i + 1; j < keys.length; j++) {
if (keys[j] < keys[min]) {
// min用来保存一趟中最小元素的下标
min = j;
}
}
if (min != i) {
swap(keys, i, min);
}
System.out.print("\n第" + (i + 1) + "趟 : ");
print(keys);
}
}
public static void main(String[] args) {
int[] values = StraightSelectSort.randomInt(10, 100);
System.out.print("关键字序列:");
StraightSelectSort.print(values);
StraightSelectSort.selectSort(values);
}
}
输出如下:
关键字序列:17 96 77 74 28 41 13 75 56 42
第1趟 : 13 96 77 74 28 41 17 75 56 42
第2趟 : 13 17 77 74 28 41 96 75 56 42
第3趟 : 13 17 28 74 77 41 96 75 56 42
第4趟 : 13 17 28 41 77 74 96 75 56 42
第5趟 : 13 17 28 41 42 74 96 75 56 77
第6趟 : 13 17 28 41 42 56 96 75 74 77
第7趟 : 13 17 28 41 42 56 74 75 96 77
第8趟 : 13 17 28 41 42 56 74 75 96 77
第9趟 : 13 17 28 41 42 56 74 75 77 96
- 排序——选择排序之直接选择排序
- 选择排序——直接选择排序
- 数据结构例程——选择排序之直接选择排序
- 排序之直接选择排序
- 排序之直接选择排序
- 排序之直接选择排序
- 选择排序之直接选择排序
- 选择排序之直接选择排序
- 选择排序之直接选择排序
- 选择排序之直接选择排序
- 选择排序之直接选择排序
- 选择排序之直接选择排序
- 选择排序之直接选择排序
- 选择排序之直接选择排序
- 排序算法——直接选择排序
- 【排序】直接选择排序
- 【排序】直接选择排序
- 【排序】直接选择排序
- 【线段树】【数据结构】Data Structure Special Training 2 T1 setmod 题解
- [DP]从01背包开始
- 001自动刷新页面
- 感想3
- Javascript中函数、构造函数以及原型的用法区别
- 排序——选择排序之直接选择排序
- 搬瓦工shadowsocks服务器端(Centos)和客户端(Ubuntu)的配置
- 【C++】多个类的DLL封装及调用
- System.getProperty("ENM_HOME")中的值是从哪里获取的
- JAVA:第一个只出现一次的字符
- 在finalize方法中复活java对象
- qt中“无法启动此程序,因为计算机丢失缺少Qt5.Core.dll”
- 创建web service proxy错误未知类型参考ns1
- Log4j教程