码迷,mamicode.com
首页 > 编程语言 > 详细

算法基础之选择排序

时间:2017-10-03 23:23:22      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:[]   算法   另一个   基础   log   ++   数组   pack   ack   

 

  选择排序是排序算法当中的入门算法,相信学过数据结构与算法的同学都是从这个排序开始的吧。大一接触选择排序算法的时候觉得好简单(相比冒泡排序来说),因为它的实现方式比较接近于人的思维方式。顾名思义,选择排序算法,起码会有个“选择”的过程吧?没错,选择排序就是设定了两个区域,一个为有序区,另一个则是无序区了。或者说是已排序区和等待排序区,都是一样的。在选择排序当中,每次循环都是在无序区当中选择一个最小(或最大)的元素,跟当前的元素进行交换;如果无序区中没有比当前元素小(或大)的值,那么已经是无序区中最小值了,它的合适位置就是当前位置。

  比方说,有一个长度为4的数组a,{3,2,4,1}。那么我们第一趟排序就是要确定第一个位置,也就是下标为0的位置,此时下标为0的位置是3,依次与后面元素比较,发现2比3小,那么下标为0的元素和小标为1的元素交换位置,此时a[0]为2,继续比较发现a[3]比a[1]小,那么a[0]与a[3]交换位置,依次类推。

  

 1 package selectionSort;
 2 
 3 import java.util.Arrays;
 4 /*
 5  * 选择排序
 6  * 本例子为升序
 7  */
 8 public class SelectSort {
 9     public static void selectSort(int[] array) {
10         
11 
12         for (int i = 0; i < array.length; i++) {
13             /*
14              * 每一趟排序都默认该位置为最小值,如果后面找到更小的,两者交换位置
15              */
16             for (int j = i + 1; j < array.length; j++) {
17                 if (array[j] < array[i]) {
18                     int tmp = array[i];
19                     array[i] = array[j];
20                     array[j] = tmp;
21                 }
22             }
23 
24         }
25 
26     }
27 
28     public static void main(String[] args) {
29 
30         int[] arr = {2,1,7,3,5};
31         System.out.println("排序前:" + Arrays.toString(arr));
32         
33         selectSort(arr);
34         System.out.println("排序后:" + Arrays.toString(arr));
35 
36     }
37 }

 

算法基础之选择排序

标签:[]   算法   另一个   基础   log   ++   数组   pack   ack   

原文地址:http://www.cnblogs.com/xiaosheblog/p/7624659.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!