經典排序算法(6)——直接選擇排序算法詳解

直接選擇排序(Straight Select Sort)是一種典型的選擇排序算法,通過不斷選擇序列中最大(小)的元素。


一、算法基本思想

(1)基本思想

直接選擇排序的基本思想就是:不斷從未排序隊列中選擇最大(小)的元素放到已排序隊列隊尾,直至所有元素都排好序。

(2)運行過程

直接選擇排序算法的運作如下:

1、首先在原始序列中找到最小(大)元素,存放到排序序列的起始位置

2、再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。

3)重複第二步,直到所有元素均排序完畢。


(3)示例


二、算法實現(核心代碼)

C++實現:

void selection_sort(int arr[], int len)
{
  int i, j, min;
  for (i = 0; i < len - 1; i++) 
  {
     min = i;
     for (j = i + 1; j < len; j++)
        if(arr[min] > arr[j])
	       min = j;
     swap(arr[i], arr[min]);
  }
}

Java實現:

public void selection_sort(int[] arr) {
	int i, j, min, temp, len = arr.length;
	for (i = 0; i < len - 1; i++) {
		min = i;
		for (j = i + 1; j < len; j++)
			if (arr[min] > arr[j])
				min = j;
		temp = arr[min];
		arr[min] = arr[i];
		arr[i] = temp;
	}
}

三、性能(算法時間、空間複雜度、穩定性)分析

直接選擇排序平均時間複雜度爲O(n^2);空間複雜度爲O(1);是不穩定的排序算法

原始序列: 21,25,49,25*,16,08
排序後:08,16,   21,25*,25,49
兩個25的位置變化了,所以是不穩定的。


發佈了87 篇原創文章 · 獲贊 190 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章