简单选择排序及其改进算法
来源:互联网 发布:ecs绑定域名 编辑:程序博客网 时间:2024/06/05 12:06
1、未改进的简单选择排序
public static void main(String[] args) { int[] s={9,1,5,8,3,7,4,6,2}; SimpleSelectSort(s); } private static void SimpleSelectSort(int[] s) { for(int i=0;i<s.length;i++){ int min=i; for(int j=i+1;j<s.length;j++){ if(s[min]>s[j]) min=j; } if(min!=i){ int a=s[min]; s[min]=s[i]; s[i]=a; } for(int k=0;k<s.length;k++){ System.out.print(s[k]+" "); } System.out.println(); } } }排序的结果如下:
1 9 5 8 3 7 4 6 2 1 2 5 8 3 7 4 6 9 1 2 3 8 5 7 4 6 9 1 2 3 4 5 7 8 6 9 1 2 3 4 5 7 8 6 9 1 2 3 4 5 6 8 7 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
2、改进之后的简单选择排序
private static void SelectSort(int[] s) { for(int i=0;i<s.length;i++){ boolean flag=false;//此处设置了一个判别标志 int min=i; for(int j=i+1;j<s.length;j++){ if(s[min]>s[j]){ min=j; flag=true;//如果当前值不是最小值,flag变为true,否则说明当前值就是最小值,则直接从下一个起点开始进行判别; } } if(!flag) continue; if(min!=i){ int a = s[min]; s[min]=s[i]; s[i]=a; } for(int k=0;k<s.length;k++){ System.out.print(s[k]+" "); } System.out.println(); } }
排序的结果如下:
1 9 5 8 3 7 4 6 2 1 2 5 8 3 7 4 6 9 1 2 3 8 5 7 4 6 9 1 2 3 4 5 7 8 6 9 1 2 3 4 5 6 8 7 9 1 2 3 4 5 6 7 8 9
两种排序结果比较可以发现,改进版的简单选择排序更优,特别是针对某一个中间点出现局部排序的情况,那么改进版的简单选择排序效果会更好。
0 0
- 简单选择排序及其改进算法
- 简单选择排序及其改进算法
- 排序算法--选择+冒泡及其改进
- 改进排序算法:堆排序(对简单选择排序的改进)
- 冒泡排序及其改进算法
- 冒泡排序及其改进算法
- 冒泡排序及其改进算法
- 冒泡排序及其改进算法
- 冒泡、插入、选择排序及其改进
- 冒泡、插入、选择排序及其改进
- 排序算法之插入排序及其改进
- 排序算法之冒泡排序及其改进
- 快速排序算法及其改进算法实现
- 堆排序算法(选择排序改进)
- 快速排序及其改进算法C++实现
- 简单选择排序(与改进)
- 第十五周算法改进(选择排序)
- 算法:简单选择排序
- python install package
- 浅谈SVM(一)
- 文章标题
- python模块的加载与重载
- C#关键字之Partial详解
- 简单选择排序及其改进算法
- 抽象类与接口
- Gldie使用小技巧
- 手机共享wifi给台式机
- [ASIFT 2] ASIFT Resize Images and simulate a tilt
- lintcode(58)四数之和
- ZOJ 3962 Seven Segment Display (数位 DP)
- 第一篇博客-CSDN-markdown编辑器(自动生成)
- 安卓在GooglePlay上线后同时平板也能搜到