首页 > 编程语言 > 详细

基础排序算法:选择排序

时间:2015-10-20 16:32:50      阅读:184      评论:0      收藏:0      [点我收藏+]

一、原理:

  1、遍历整个数组找到最小的那个元素。

  2、将他和数组的第一个元素交换位置(如果第一个元素是最小元素,则和自己交换)。

  3、在剩下的元素中找到最小的元素,将他和数组的第二个元素交换位置。

  4、如此往复,直到将整个数组排序。

 

二、主要实现:

  1、java部分实现(通过Comparable接口)

 1 public class Selection
 2 {
 3     private static boolean less(Comparable v, Comparable w)
 4     {    
 5         //检测v是否小于w,为真返回负,为假返回正,相等返回零
 6         return v.compareTo(w) < 0;
 7     }
 8     
 9     private static void exch(Comparable[] a, int i, int j)
10     {
11         //交换元素位置
12         Comparable t = a[i];
13         a[i] = a[j];
14         a[j] = t;
15     }
16     
17     public static void sort(Comparable[] a)
18     {
19         
20         int N = a.length;
21         for (int i = 0; i < N; i++)
22         {
23             int min = i;    //把i设为初始最小元素
24             for (j = i + 1; j < N; j++)
25                 if (less(a[j], min))
26                     min = j;    //把i之后的每一个元素都与当前的最小元素比较,若比最小元素小,则把索引赋值给最小元素
27             exch(a, i, min);    //比较完成后,把最小元素与i的位置交换
28         }
29     }
30 }

 

 

 

   2、python实现

1 def Selection(list):
2     for i in range(len(list)):
3         min = i
4         for j in range(i, len(list)):
5             if list[min] > list[j]:
6                 min = j
7         temp = list[i]
8         list[i] = list[min]
9         list[min] = temp

 

三、特点:

  1、运行时间和输入无关

  2、数据移动是最少的

  3、需要大约N2/2次比较和N次交换

基础排序算法:选择排序

原文:http://www.cnblogs.com/SlientGuest/p/4892367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!