Chinaunix首页 | 论坛 | 博客
  • 博客访问: 242112
  • 博文数量: 164
  • 博客积分: 60
  • 博客等级: 民兵
  • 技术积分: 1129
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 21:55
文章分类

全部博文(164)

文章存档

2017年(2)

2015年(67)

2014年(95)

我的朋友

分类: Java

2015-04-30 11:43:00

1 选择排序比冒泡排序效率高。


点击(此处)折叠或打开

  1. package com.lhk.sortDemo;

  2. public interface Sort {
  3.     public boolean sort(int[] arr);
  4. }


点击(此处)折叠或打开

  1. package com.lhk.sortDemo;

  2. public class SelectSort implements Sort {

  3.     public boolean sort(int[] arr) {
  4.         
  5.         if(arr == null){
  6.             return false;
  7.         }
  8.         
  9.         if(arr.length <= 1){
  10.             return true;
  11.         }
  12.         
  13.         
  14.         int length = arr.length;
  15.         
  16.         // 比较次数
  17.         int compareNum = 0;
  18.         
  19.         // 交换次数
  20.         int swapNum = 0;
  21.         
  22.         
  23.         int min = 0;
  24.         for(int i = 0; i < length - 1; i++){
  25.             min = i;
  26.             for(int j = i + 1 ; j < length; j++){
  27.                 compareNum++;
  28.                 if(arr[min] > arr[j]){
  29.                     min = j;
  30.                 }
  31.             }
  32.             
  33.             if(min != i){
  34.                 swapNum++;
  35.                 swap(arr, min, i);
  36.             }
  37.         }
  38.         
  39.         System.out.println("对比次数: " + compareNum + " 交换次数 :" + swapNum);
  40.         return false;
  41.     }
  42.     
  43.     
  44.     private void swap(int[] arr, int start, int end){
  45.         // 安全性判断就不做了。。
  46.         int temp = arr[start];
  47.         arr[start] = arr[end];
  48.         arr[end] = temp;
  49.     }
  50. }

点击(此处)折叠或打开

  1. package com.lhk.sortDemo;

  2. import java.util.Arrays;

  3. public class SortDemo1 {

  4.     /**
  5.      * @param args
  6.      */
  7.     public static void main(String[] args) {

  8.         int[] arr = {1,4,6,8,1,11,34,2,67,5,1,9,10,13,2,4,5};
  9.         
  10.         // 冒泡排序
  11. //        Sort bubbleSort = new BubbleSort();
  12. //        System.out.println("bubble sort");
  13. //        System.out.println("before sort :" + Arrays.toString(arr));
  14. //        bubbleSort.sort(arr);
  15. //        System.out.println("after sort :" + Arrays.toString(arr));
  16.         
  17.         // 选择排序
  18.         Sort selectSort = new SelectSort();
  19.         System.out.println("select sort");
  20.         System.out.println("before sort :" + Arrays.toString(arr));
  21.         selectSort.sort(arr);
  22.         System.out.println("after sort :" + Arrays.toString(arr));
  23.     }

  24. }
结果:
select sort
before sort :[1, 4, 6, 8, 1, 11, 34, 2, 67, 5, 1, 9, 10, 13, 2, 4, 5]
对比次数: 136  交换次数  :10
after sort :[1, 1, 1, 2, 2, 4, 4, 5, 5, 6, 8, 9, 10, 11, 13, 34, 67]




阅读(617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~