C++插入排序原始碼
阿新 • • 發佈:2018-12-17
原始碼:
#include <iostream> #include <cstdlib> using namespace std; void insertSort(int* arr, const int& num) { int curPtr = 0, minPtr = 0; //curPtr為當前需要選擇要插入的元數下標 for (curPtr = 1; curPtr < num; curPtr++) { //Min為比當前元數小的引數下標,如果沒有,minPtr=-1 for (minPtr = curPtr - 1; minPtr >= 0; minPtr--) { if (arr[minPtr] < arr[curPtr]) { break; } } //判斷是不是index的前一個數,如果是,則不需要排序 if (minPtr == curPtr - 1) { continue; } //把要插入的位置的元素之後的元素後移 //insertNum是要被插入的數,movePtr是需要移動的位置 int insertNum = arr[curPtr]; int movePtr = curPtr - 1; //把minPtr和curPtr的元素都後移一位 while (movePtr > minPtr) { arr[movePtr + 1] = arr[movePtr]; movePtr--; } //插入元素 arr[minPtr + 1] = insertNum; } } int main() { const int num = 10; int arr[num] = { 13,23,14,1,89,47,68,23,45,90 }; cout << "排序前:"; for (int i = 0; i < num; i++) { cout << arr[i] << " "; } cout << endl; insertSort(arr, num); cout << "排序後:"; for (int i = 0; i < num; i++) { cout << arr[i] << " "; } cout << endl; system("pause"); return 0; }
執行過程:
執行結果: