package algorithm.sort;
/**
* 选择排序:首先找出数组中的最小元素,将其与数组的第一个元素交换,
* 接着找出次小元素,将其与数组的第二个元素交换
* 对数组中的前n-1个元素执行这一过程
* @author Administrator
*
*/
public class SelectSort {
//对数组指定的元素进行排序
public void selectSort(int[] a, int from, int end) {
int minIndex; //记录最小元素的索引
for (int i = from; i <= end; i++) {
minIndex = i; //首先假设最小元素为每次循环的第一个元素
for(int j = i+1; j <= end; j++) {
if(a[j] < a[minIndex])
minIndex = j; //找出最小元素对应的索引
}
//交换最小元素与每次循环的第一个元素
exchange(a, i, minIndex);
}
}
//对整个数组排序
public void selectSort(int[] a) {
selectSort(a, 0, a.length-1);
}
//交换数组中的两个元素
public void exchange(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
//打印数组
public void printArr(String str, int[] a) {
System.out.print(str + "\t");
for(int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
//测试数据
public static void main(String[] args) {
SelectSort ss = new SelectSort();
int[] a = {1,4,3,7,5,8,0};
ss.printArr("原始数组为:", a);
ss.selectSort(a);
ss.printArr("合并排序后:", a);
}
}
//output~
原始数组为: 1 4 3 7 5 8 0
合并排序后: 0 1 3 4 5 7 8
分享到:
相关推荐
选择排序: 每次在“无序”队列中选择“最小值”,放在有序队列最后,并从无序队列中删除该值。
* 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。
NULL 博文链接:https://ninghui521.iteye.com/blog/1697377
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
归并排序 在排序前,先建好一个长度等于原数组长度的临时数组
按下标的一定增量分组,对每组使用直接插入算法排序;随着增量 * 逐渐减少,每组包含的关键字越来越多,当增量减至1时,整个文件恰 * 好被分成一组,算法便终止。 * 8,9,1,7,2,3,5,4,6,0 * //初始增量 gap=...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
快速排序 * 1.i=left,j=right,将基准数挖出形成第一个坑a[i]; * 2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]; * 3.i++由前向后找比它大的数,找到后挖出此数填到前一个坑a[j]中 * 4.以i为中线,...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
自动生成500个随机数,然后对这500个随机数进行归并排序
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1867491
算法-归并排序(java)(csdn)————程序
基数排序/桶排序 *统计将数组中的数字分配到桶中后,各个桶中的数字个数 *数组中每个数的每一位数根据大小分配到对应大小为0~9的桶 *将各个桶中的数字个数,转化成各个桶中最后一个数字的下标索引
插入排序: * 始终定义第一个元素为有序, 将无序元素 * 逐个插入到有序排列之中,不断的移动数据, * 空出一个适当的位置,把待插入的元素放到里 * 面去。
java代码-使用java解决java排序之-快速排序的问题的源代码 ——学习参考资料:仅用于个人学习使用!
(10)数据结构之红黑树(三)——删除操作 (11)排序算法(一)——冒泡排序及改进 (12)排序算法(二)——选择排序及改进 (13)排序算法(三)——插入排序及改进 (14)排序算法(四)——归并排序与递归...
冒泡排序是最基础的排序算法之一,但它并不是最优的排序算法。 1. 算法思想 冒泡排序是将数据中的每个数与相邻数进行比较并交换,大数往上冒,小数往下沉,每个数都遍历一次后便可以排出顺序。 2. 算法步骤 (1)...