java算法:选择排序
来源:互联网 发布:手机上能注册淘宝店铺 编辑:程序博客网 时间:2024/05/18 03:58
java算法:选择排序
选择排序:找数组中的最小元素与第一个位置的元素比较交换,然后找第二个最小的元素并与第二个位置的元素比较交换,一直进行下去,直到整个数组排序完毕。
如,对EXAMPLE 字母进行排序:
E X A M P L E
[A] X E M P L E 第一位置最小值A
[A] [E] X M P L E 第二位置剩下最小值E
[A] [E] [E] M P L X 第三位置剩下最小值E
[A] [E] [E] [L] P M X ...
[A] [E] [E] [L] [M] P X
[A] [E] [E] [L] [M] [P] X
[A] [E] [E] [L] [M] [P] [X]
- public interface Item{
- boolean less(Item v);
- }
public interface Item{boolean less(Item v);}
- public class MyItem implements Item{
- private int key;
- public boolean less(Item v){
- return key < ((MyItem)v).key;
- }
- public void read(){
- key = new Random().nextInt();
- }
- public void rand(){
- key = (int)(1000 * Math.random());
- }
- public String toString(){
- return key + "";
- }
- }
public class MyItem implements Item{private int key;public boolean less(Item v){return key < ((MyItem)v).key;}public void read(){key = new Random().nextInt();}public void rand(){key = (int)(1000 * Math.random());}public String toString(){return key + "";}}
- public class Selection {
- public static void main(String[] args) {
- int n = 60;
- MyItem [] a = new MyItem[n];
- for (int i = 0; i < n; i++) {
- a[i] = new MyItem();
- a[i].rand();
- }
- for (int i = 0; i < n; i++) {
- System.out.print(a[i] + " ");
- }
- selection(a, 0, n);
- System.out.println("");
- print(a, n);
- }
- private static void print(MyItem a [], int n){
- for (int i = 0; i < n; i++) {
- System.out.print(a[i] + " ");
- }
- }
- public static void selection(MyItem [] a, int l, int r){
- for (int i = l; i < r; i++) {
- int min = i;
- for (int j = i + 1; j < r; j++) {
- if(less(a[j], a[min])){
- min = j;
- }
- }
- exch(a, i, min);
- }
- }
- public static boolean less(Item v, Item w){
- return v.less(w);
- }
- public static void exch(Item [] a, int i, int j){
- Item t = a[i];
- a[i] = a[j];
- a[j] = t;
- }
- public static void compExch(Item [] a, int i, int j){
- if(less(a[j],a[i])){
- exch(a, i, j);
- }
- }
- }
public class Selection {public static void main(String[] args) {int n = 60;MyItem [] a = new MyItem[n];for (int i = 0; i < n; i++) {a[i] = new MyItem();a[i].rand();}for (int i = 0; i < n; i++) {System.out.print(a[i] + " ");}selection(a, 0, n);System.out.println("");print(a, n);}private static void print(MyItem a [], int n){for (int i = 0; i < n; i++) {System.out.print(a[i] + " ");}}public static void selection(MyItem [] a, int l, int r){for (int i = l; i < r; i++) {int min = i;for (int j = i + 1; j < r; j++) {if(less(a[j], a[min])){min = j;}}exch(a, i, min);}}public static boolean less(Item v, Item w){return v.less(w);}public static void exch(Item [] a, int i, int j){Item t = a[i];a[i] = a[j];a[j] = t;}public static void compExch(Item [] a, int i, int j){if(less(a[j],a[i])){exch(a, i, j);}}}
选择排序的缺点是它的运行时间与文件中已排序的数量几乎没有关系。寻找最小元素的一次遍历并不能提供多少关于下一次遍历文件时最小元素位置的信息。可以看到,使用选择排序所花费的时间不管对于随机或已排好都是差不多。不能很好的利用文件中的有序性。
- java 选择排序算法
- java选择排序算法~~~
- java选择排序算法
- java选择排序算法
- java选择排序算法
- java算法:选择排序
- java算法---选择排序
- Java选择排序算法
- Java选择排序算法
- java选择排序算法
- Java选择排序算法
- JAVA-选择排序算法
- Java算法-选择排序
- java 选择排序算法
- 选择排序算法(Java)
- 选择排序算法,java
- Java选择排序算法
- Java算法:选择排序
- 第一篇:测试
- java算法:排序实现
- iOS开发之iOS程序偏好设置(Settings Bundle)的使用
- 记录Android Framework级开发的心酸历程(一):环境篇
- ICMP数据包-实战分析
- java算法:选择排序
- java算法:插入排序
- div自动换行word-break:break-all和word-wrap:break-word的区别
- java算法:冒泡排序
- 扫雷___界面的加载
- MFC工具条与状态条设计
- 十六. Sql server表格,索引,视图的命名规范
- Android Touch事件传递机制解析
- ubuntu常用命令