插入排序 来一个例子排序的过程如下:给定无需序列:(3,6,9,7,1,8,2,4)
① 3,6,9,7,1,8,2,4 (将6插入到有序序列3中)
② 3,6,9,7,1,8,2,4 (将9插入到有序序列3,6中)
③ 3,6,9,7,1,8,2,4 (将7插入到有序序列3,6,9中)
④ 3,6,7,9,1,8,2,4 (将1插入到有序序列3,6,7,9中)
⑤ 1,3,6,7,9,8,2,4 (将8插入到有序序列1,3,6,7,9中)
⑥ 1,3,6,7,8,9,2,4 (将2插入到有序序列1,3,6,7,8,9中)
⑦ 1,2,3,6,7,8,9,4 (将4插入到有序序列1,2,3,6,7,8,9中)
⑧ 1,2,3,4,6,7,8,9 (排序成功)
在上代码,因为我一直在学习C++,所以目前都在用c++写代码了。
// algorithm.cpp : 定义控制台应用程序的入口点。 //author :wallwind //time:2011.8.1 //插入排序算法:插入排序算法的算法复杂度是 虽然在最坏情况下复杂性为θ(n2),但是他是原地置换的程序所以,会减少资源的分配。对一些数据量小的算法比较合适。其思想就是将一个数字插入到一个已 //排好序的数组中。分为外围循环和内部循环。 #include "stdafx.h" #include<iostream> #include <string> using namespace std; void insert_sort(int a[],int size) { for (int j=1;j<size;j++) { int key=a[j]; int i=j-1; while (i>-1&&a[i]>key) { a[i+1]=a[i]; i=i-1; } a[i+1]=key; } } int _tmain(int argc, _TCHAR* argv[]) { int aa[8]={7,9,2,6,4,3,8,1}; insert_sort(aa,8); for (int i=0;i<8;i++) { cout<<aa[i]<<" "; } return 0; }
还有就是设置哨兵的算法,带以后写出代码和原理。