1. 程式人生 > >C++插入排序原始碼

C++插入排序原始碼

原始碼: 

#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;
}

執行過程:

 

 

 

 

 

執行結果: