实现思路:
1.从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置。
2.然后再用第三个数和第二个比较,符合则交换,但是此处还得继续往前比较,比如有 5个数8,15,20,45, 17
,17比45小,需要交换,但是17也比20小,也要交换,当不需 要和15交换以后,说明也不需要和15前面的数据比较了,肯定不需要交换,因为前 面的数据都是有序的。
3.重复步骤二,一直到数据全都排完。
代码范例
#include "stdafx.h" #include<windows.h> #include<iostream> using namespace std; //插入排序 bool StraightSort(int *arr, int len) { int tmp; int i; int j; for (i = 1; i < len; i++) { tmp = arr[i]; for (j = i - 1; j >= 0 && arr[j] > tmp; j--) { arr[j + 1] = arr[j]; } arr[j + 1] = tmp; } return true; } int main() { bool bRet; int temp[] = { 3,2,1 }; bRet = StraightSort(temp, sizeof(temp) / sizeof(int)); for (int i = 0; i < sizeof(temp) / sizeof(int); i++) { cout << temp[i]; } system("pause"); return 0; }