插入排序(c++實現)
阿新 • • 發佈:2018-12-16
插入排序原理:
#include<iostream> using namespace std; //插入排序 void InsertionSort(int a[], int size) { int i; //有序區間的最後一個元素的位置,i+1就是無序區間最左邊元素的位置 for(i = 0; i < size-1; ++i){ int tmp = a[i + 1]; //tmp是待插入到有序區間的元素,即無序區間最左邊的元素 int j = i; while(j >= 0 && tmp < a[j]){ //尋找插入的位置 a[j + 1] = a[j]; //比tmp大的元素都往後移動 --j; } a[j + 1] = tmp; } } //輸出二維陣列,rows是行數 void PrintArray(int a[][5], int rows) { for(int i = 0; i < rows; ++i){ for(int j = 0; j < 5; ++j) cout << a[i][j] << " "; cout << endl; } } //主函式 int main(){ int b[5] = {50, 30, 20, 10, 40}; int a2d[3][5] = {{5, 3, 2, 1, 4},{10, 20, 50, 40, 30},{100, 120, 50, 140, 30}}; InsertionSort(b, 5); for(int i = 0; i < 5; ++i) cout << b[i] << " "; cout << endl; for(int i = 0; i < 3; ++i) //將 a2d每一行均排序 InsertionSort(a2d[i], 5); PrintArray(a2d, 3); return 0; }