每天一个小算法之 选择排序算法
2017-05-21 10:13
302 查看
选择排序算法在每一步中选取最小值来重新排列,从而达到排序的目的。
选择排序算法通过选择和交换来实现排序,实现步骤如下:
1.首先从原始数组中选择最小的1个数据,将其和位于第一个位置的数据交换。
2.接着从剩下的 n-1 个数据中选择次小的1个数据,将其和第二个位置的数据交换
3.然后不断重复上述过程,直到最后两个两个数据完成交换。至此便完成了对原始数组从小到大的排序。
示例代码如下:
选择排序算法通过选择和交换来实现排序,实现步骤如下:
1.首先从原始数组中选择最小的1个数据,将其和位于第一个位置的数据交换。
2.接着从剩下的 n-1 个数据中选择次小的1个数据,将其和第二个位置的数据交换
3.然后不断重复上述过程,直到最后两个两个数据完成交换。至此便完成了对原始数组从小到大的排序。
示例代码如下:
void selectSort(int[] a) { int index; //交换临时变量 int temp; for (int i = 0; i < a.length - 1; i++) { index = i; for (int j = i + 1; j < a.length; j++) { if (a[j] < a[index]) { index = j; } } //交换两个数 if (index != i) { temp = a[i]; a[i] = a[index]; a[index] = temp; } } //输出排序结果 for (int anA : a) { System.out.print(" " + anA); } }
相关文章推荐
- 每天学一点算法-选择排序算法
- 【每天算法1】:用java 语言实现,输入一个数,就相应地输出的几维数组
- 【每天算法4】编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
- 每天学习一算法系列(26)(输入一个整数,求该整数的二进制表达中有多少个1)
- 每天学习一算法系列(32)(求一个矩阵中最大的二维矩阵(元素和最大))
- 每天学习一算法系列(31)(实现一个队列,队列的应用场景为:一个生产者线程将int 类型的数入列,一个消费者线程将int 类型的数出列)
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- 【每天一个算法】一、交换两个整数
- 每天学习一算法系列(23)(写一个程序,要求功能,求出用1、2、5这三个数不同个数组合的和为100的组合数)
- 每天学习一算法系列(20)(输入一个表示整数的字符串,把该字符串转换成整数并输出)
- 每天学习一算法系列(34)(求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数)
- 每天一个排序算法之插入排序
- 每天学习一算法系列(4) (输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和)
- 一些算法的复习和整理,争取每天一个算法
- 每天学习一算法系列(25)(一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度。)
- 【每天算法2】:用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 面试算法的复习和整理,争取每天一个算法[常更长新]
- 每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)
- 每天学习一算法系列(28)(输入一个整数n,求从1 到n 这n 个整数的十进制表示中1 出现的次数)
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现