选择排序思想:
数组长度为L,做(L-1)趟的选择,把最小的元素放在有序数组的后面(无序数组的首位)。
这样,每趟需要做(L-1)~1次比较,总共做L*(L-1)/2次比较,时间复杂度O(N*N),空间复杂度O(1),是一种稳定的排序。
/**
* SelectSort.java
*
* 该类实现选择排序.
* i.e: java SelectSort 3 2 1 4 5 6
*
* @author Administrator
*/
public class SelectSort {
/**
* 选择排序一个数组。
*/
public static void selectSort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
int k = selectMinIndex(a, i, a.length - 1);
if (i != k)
Util.swap(a, i, k);
}
}
/**
* 该方法返回数组(下标范围i~j)中最小值的下标。
*/
private static int selectMinIndex(int[] a, int i, int j) {
int minIndex = i;
for (int p = i; p < j; p++)
if (a[minIndex] > a[p + 1])
minIndex = p + 1;
return minIndex;
}
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("请输入数字以空格隔开");
System.exit(-1);
}
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++)
a[i] = Integer.parseInt(args[i]);
SelectSort.selectSort(a);
// 输出排序后的数组元素。
for (int i = 0; i < a.length; i++)
System.out.println(a[i]);
}
}
分享到:
相关推荐
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等七种排序方法
交换排序 选择排序 冒泡排序 插入排序
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
常见的经典排序算法有希尔排序、二分插入法、直接插入法、带哨兵的直接排序法、冒泡排序、选择排序、快速排序、堆排序等。 一、希尔排序(Shell 排序法) 希尔排序法,又称宿小增量排序,是 1959 年由 D.L.Shell ...
本文将深入探讨四种常见的排序算法:快速排序、归并排序、冒泡排序和选择排序。这些算法不仅在理论上有其重要性,而且在实际编程项目中也经常被用到。 ### 快速排序 快速排序是由英国计算机科学家C.A.R. Hoare提出...
对链表进行相应操作 链表为双向链表 其中的操作有 快速排序 选择排序 插入 删除链表 从链表中获取一个数等等 程序并没有测试周全 欢迎下载 若发现问题希望在我CSDN留言 以便及时更改
汇编 从大到小排排序 选择排序法 需要 在程序中设置索要排序的数值
快速排序 选择排序.jpg
- 选择排序首先找到数组中最小的元素,将其放在首位,然后再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾,依次类推,直到所有元素均排序完毕。 - C# 实现选择排序时,可以维护两个指针,一个...
以下将详细讲解标题和描述中提到的几种排序算法:冒泡排序、快速排序、选择排序、二分法、插入排序以及快速选择排序。 1. **冒泡排序**:冒泡排序是一种简单的比较排序算法。它通过重复遍历待排序的数列,一次比较...
这里我们汇总了七种常见的排序算法:Shell排序、归并排序、选择排序、快速排序、堆排序、冒泡排序和插入排序。每种算法都有其独特的特点和适用场景,下面将逐一详细介绍。 1. **Shell排序**:由Donald Shell提出,...
本文主要介绍了五种内部排序算法:插入排序、交换排序、选择排序、归并排序和基数排序。 1. **插入排序**: 插入排序的基本思想是从未排序的序列中取出一个元素,然后将其插入到已排序序列的正确位置,以保持序列...
这四种排序算法都是基础排序算法的重要组成部分,其中冒泡排序和选择排序的时间复杂度较高(均为O(n^2)),而插入排序适用于部分有序的数组。希尔排序则是插入排序的一种优化版本,通过增量分组的方式提高了排序效率...
排序算法汇总P: 冒泡排序快速排序直接选择排序插入排序希尔排序 堆排序........
以下是关于四种经典排序算法——插入排序、冒泡排序、快速排序和选择排序的详细解释,以及它们在多线程环境下的应用考虑。 1. **插入排序**:插入排序是一种简单直观的排序算法,它的工作原理类似于人们玩扑克牌时...
排序算法汇总(选择排序、直接插入排序、冒泡排序、希尔排序、快速排序、堆排序) 本资源介绍了六种常用的排序算法:选择排序、直接插入排序、冒泡排序、希尔排序、快速排序和堆排序。下面对每种算法进行详细介绍:...
本主题将详细探讨通过色彩渐变立方体来可视化三种经典的排序算法:冒泡排序、插入排序和选择排序。 首先,让我们理解色彩渐变的概念。在本案例中,红色、绿色和蓝色的立方体代表不同的数值,颜色的深浅或明暗表示...
这里我们将深入探讨几种经典的排序算法:选择排序、归并排序、冒泡排序、堆排序和快速排序,并通过C++语言来实现它们,同时分析各自的效率。 **1. 选择排序(Selection Sort)** 选择排序是一种简单直观的排序算法...
根据给定的信息,本文将对九种不同的排序算法进行详细解析:选择排序、插入排序、冒泡排序、希尔排序、快速排序、箱子排序(计数排序)、基数排序、归并排序以及堆排序。 ### 一、选择排序 选择排序的基本思想是...
其核心思想是选择一个基准元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,...