1. 程式人生 > 其它 >C++實現選擇排序演算法(個人理解編寫)

C++實現選擇排序演算法(個人理解編寫)

技術標籤:C++c++演算法

原始碼:

#include <iostream>
#include <cstdlib>  //rand() 和 srand()的標頭檔案
#include <ctime> //time的標頭檔案
#define MAXSIZE 10 //巨集定義陣列最大容量
using namespace std;

void make_sorted(int * array) //隨機生成100以內的亂序整數
{ //這裡把array[0]留著當中轉站用
    srand((unsigned int)time(NULL));
    cout << "隨機生成的10個數為:"
; for(int i = 1; i < MAXSIZE + 1; i++) { array[i] = rand() % 100; cout << array[i] << " "; } cout << endl; } void select_sort(int * array) //選擇排序 { int mark; //mark標記選出來的最小值的位置 for (int i = 1; i < MAXSIZE; i++) //最外迴圈:排序總共需要排9次 {
array[0] = array[i]; //a[i]賦值給a[0] for (int j = i; j < MAXSIZE + 1; j++) //一開始需要從10個數裡面挑選,然後逐次減少 { if (array[0] > array[j]) //用來挑選最小值 { array[0] = array[j]; //用小的那個值替代a[o]裡面的值 mark = j; //標記好最小值原本的位置 } } for
(int k = mark - i; k > 0; k--) //最小值往前需要移mark - i 次 { array[mark] = array[mark-1]; //前面的數往後移 mark--; } array[i] = array[0]; //全部移完之後,a[0]裡面的值位置就有了(a[0]是第i小的值) } cout << "選擇排序的結果為:"; for (int i = 1; i < MAXSIZE + 1; i++) { cout << array[i] << " "; } cout << endl; } int main() { int * array; array = new int [MAXSIZE]; make_sorted(array); select_sort(array); cout << endl; delete [] array; return 0; }

演示結果截圖:
在這裡插入圖片描述