算法基础之选择排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法基础之选择排序相关的知识,希望对你有一定的参考价值。

 

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

  比方说,有一个长度为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 }

 

以上是关于算法基础之选择排序的主要内容,如果未能解决你的问题,请参考以下文章

算法基础之选择排序

基础排序算法之-选择排序

七大排序算法之选择排序

重温基础算法内部排序之堆排序法

重温基础算法内部排序之堆排序法

c语言之插入排序选择 排序