目录
1.基本思想
选择排序(Selection Sort)是一种简单直观的排序算法,它的基本思想是分多次遍历待排序的序列,每次遍历都找到序列中的最小(或最大)元素,然后将这个元素与序列的当前位置进行交换。这个过程重复进行,直到整个序列被排序完成。
2.冒泡排序的步骤
冒泡排序的具体步骤如下:
-
初始化:将序列的第一个元素作为参照点,假设它是最小的。
-
寻找最小元素:从序列的第二个元素开始,遍历整个序列,寻找比参照点还小的元素。
-
交换:如果找到了比参照点还小的元素,就将它与参照点交换位置。
-
移动参照点:将参照点向右移动一位,重复步骤2和3,直到整个序列都被遍历。
-
完成排序:当参照点移动到序列的最后一个元素时,整个序列就被排序完成了
3.冒泡排序算法的实现
以下是冒泡排序算法的Java实现示例:
java
package com.test.demo;
public class SelectionSortExample {
public static void main(String[] args) {
int[] numbers = {64, 34, 25, 12, 22, 11, 90};
selectionSort(numbers);
System.out.println("Sorted array: ");
for (int number : numbers) {
System.out.print(number + " ");
}
}
public static void selectionSort(int[] array){
int min ;
int tmp;
int length = array.length;
for (int i=0,len =length-1;i<len;i++){
min =i;
//每轮需要比较的次数 N-i
for (int j=i+1;j<length;j++){
if(array[min ]>array[j]){
// 记录目前能找到的最小值元素的下标
min =j;
}
}
// 将找到的最小值和i位置所在的值进行交换
if(min >i){
tmp = array[i];
array[i]=array[min ];
array[min ]=tmp;
}
}
}
}
4.时间复杂度分析
选择排序的时间复杂度是O(n^2),其中n是序列的长度。这是因为算法需要进行n-1次遍历来找到最小的元素,然后进行n-2次遍历,依此类推,直到最后一次只需要进行一次遍历。
5.总结
选择排序的一个优点是它不涉及复杂的递归调用,因此对于小型数据集或者对于递归深度有限制的环境,它可能是一个不错的选择。然而,对于大型数据集,由于其时间复杂度较高,通常不推荐使用选择排序。