算法描述
 将待排元素逐个向前相比较,使待排子表中最小的元素浮动到自己的最终位置。每一趟排序确定一个元素的最终位置,最多进行n-1趟排序。
代码实现
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 
 | #include <iostream>
 #include <fstream>
 using namespace std;
 
 const int n = 8;
 
 void selection_sort(int arr[]){
 for(int i=0; i<n; ++i){
 for(int j=n-1; j>i; --j){
 if(arr[j] < arr[j-1]){
 int tmp = arr[j-1];
 arr[j-1] = arr[j];
 arr[j] = tmp;
 }
 }
 }
 }
 
 int main(){
 fstream inFile;
 inFile.open("in.txt");
 int *arr = new int[n];
 for(int i=0; i<n; ++i)
 inFile >> arr[i];
 
 selection_sort(arr);
 for(int i=0; i<n; ++i)
 cout << arr[i] << " ";
 
 delete[] arr;
 inFile.close();
 return 0;
 }
 
 | 
算法分析
 (1)时间复杂度O(n2),空间复杂度O(1);
 (2)冒泡排序是一个稳定的排序算法。
转载请注明来源:©Tinshine