排序算法之二选择排序-简单选择排序和对堆排序

简介:

简单选择排序


(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换,然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较位置。
(2)实例:


(3)代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* 简单选择排序
*/

private static <AnyType extends Comparable<? super AnyType>> void selectedSort(AnyType[] arr) {
System.out.println("原数组为: " + Arrays.toString(arr));
boolean exchange = true;
for (int i = 0; i < arr.length && exchange; ++i) {
exchange = false;
AnyType min = arr[i]; // 把当前值放在一个临时变量里面,后面的数只要比它小就替换
int minIndex = i; // 当前最小数的索引值
for (int j = i+1; j < arr.length; ++j) {
if (arr[j].compareTo(min) < 0) {
exchange = true;
min = arr[j];
minIndex = j;
}
}
if (!exchange) {
break;
}
arr[minIndex] = arr[i];
arr[i] = min;
System.out.println(Arrays.toString(arr));
}
/**
原数组为: [23, 1, 42, 5, 2, 23, 12]
[1, 23, 42, 5, 2, 23, 12]
[1, 2, 42, 5, 23, 23, 12]
[1, 2, 5, 42, 23, 23, 12]
[1, 2, 5, 12, 23, 23, 42]
*/

}


堆排序

目录
相关文章
|
1月前
|
搜索推荐 算法 C语言
C语言选择排序算法,从入门到精通只需1秒!
C语言选择排序算法,从入门到精通只需1秒!
|
3月前
|
存储 人工智能 算法
深入浅出堆排序: 高效算法背后的原理与性能
深入浅出堆排序: 高效算法背后的原理与性能
46 1
|
4月前
|
搜索推荐 算法 C#
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
46 1
|
12天前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解
|
22天前
|
搜索推荐 算法
【八大经典排序算法】堆排序
【八大经典排序算法】堆排序
12 0
|
1月前
|
搜索推荐 Java
Java实现选择排序算法
Java实现选择排序算法
14 0
|
1月前
|
搜索推荐 Python
Python实现选择排序算法
Python实现选择排序算法
19 1
|
2月前
|
搜索推荐 算法 Java
【数据结构排序算法篇】----堆排序【实战演练】
【数据结构排序算法篇】----堆排序【实战演练】
25 2
|
2月前
|
搜索推荐 算法 索引
【数据结构排序算法篇】----选择排序【实战演练】
【数据结构排序算法篇】----选择排序【实战演练】
23 0
|
2月前
|
算法 搜索推荐
堆排序算法
堆排序算法
17 0