java排序算法(1)—选择排序
来源:互联网 发布:手机歌词软件 编辑:程序博客网 时间:2024/05/29 14:51
1、概述
排序就是将一组对象按照某种逻辑顺序重新排列的过程。
选择排序基本思想:
(1)首先找到数组中最小的那个元素,其次将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。
(2)再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。
(3)如此往复,直到整个数组排序。它在不断的选择剩余元素中的最小中,因此叫选择排序。
2、代码实现
package com.chunsoft.sort;public class SelectSort { //测试程序 public static void main(String[] args) { int nums[] = {1,3,2,4,1,9,3,7,4}; F_SelectSort(nums); for(int i:nums) { System.out.println(i); } } //排序方法 public static void F_SelectSort(int[] nums) { int size = nums.length; //数组长度 //边界验证 if(nums == null || size <= 0) { return; } for(int i = 0;i < size;i ++) { //将当前下标定义为最小值下标 int min = i; for(int j = i + 1;j < size;j++) { //如果有小于当前最小值的关键字,将关键字的下标赋给min if(nums[min] > nums[j]) { min = j; } } //如果min不等于i说明当前位置不是最小值,则交换 if(i != min) { int temp = nums[i]; nums[i] = nums[min]; nums[min] = temp; } } }}
3、复杂度和稳定性
(1)复杂度
如上代码实现,选择排序的内循环,只是在比较当前元素与目前的已知的最小元素(以及将当前索引加1和检查代码是否越界)。交换元素的代码写在内循环之外,每次交换都能排定一个元素,因此交互的总次数是N。因此算法的时间效率取决于比较的次数。在代码中可以看到,0~N-1的任意i都会进行一次交换和N-1-i次比较,因此总共有N次交换和(N-1)+ (N-2)+…+2+1=N(N-1)/2~N*N/2次比较。
时间复杂度:O(N*N)
空间复杂度:O(1)
(2)稳定性
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
不稳定的:选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n-1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择,如果当前元素比一个元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么 交换后稳定性就被破坏了。比较拗口,举个例子,序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。
(3)特点
(1)运行时间和输入无关(输入有序,也要不断比较);
(2)数据移动最少(N次交换,其他算法不具备的特征)。
- java排序算法(1)—选择排序
- Java排序算法——选择排序
- Java算法—选择排序
- 算法学习之排序——选择排序(Java)
- 【JAVA】算法排序(一)——选择排序法
- 排序算法-选择排序 java
- 算法:排序----Java选择排序
- java 排序算法-选择排序
- Java算法-排序-选择排序
- 排序算法Java实现——选择排序(直接选择排序)
- java 选择排序算法
- java选择排序算法~~~
- java选择排序算法
- java选择排序算法
- java选择排序算法
- java算法:选择排序
- java算法---选择排序
- Java选择排序算法
- 图书管理系统学生界面
- 初识python
- linux进程管理工具supervisor
- 服务器无响应
- JBoss/Wildfly 服务器配置(MySQL、Oracle、SQLserver)
- java排序算法(1)—选择排序
- d3js的force的增加删除操作
- 图书管理系统图书信息界面
- 南阳ACM
- 世界观随想
- spring 配置druid数据源
- 训练29-HTML 为文本输入框设定预定值
- ListView仿QQ对话界面
- 数据挖掘初入门--matlab入门