插入排序时间复杂度为:O(n^2)
每次循环,都把该次循环的元素插入相应的位置上
插入排序的C++实现如下:
#include<iostream>
using namespace std;
class InsertionSort {
public:
int* insertionSort(int* A, int n)
//插入排序
{
int i=1,j,temp;
while(i<n)
{
temp=A[i];//把A[i]先提出来
j=i-1;//j是i的前一个数
while(j>=0&&A[j]>temp)//只要j不出界,或者A[j]仍然比A[i]大,就挪动
{
A[j+1]=A[j];//把前面比A[i]大的的元素挨个挪一位
j--; //j--表示往前一位
}
A[j+1]=temp;//挪完了之后,把A[i]放在合适的位置上
i++;//继续下一个元素
}
return A;
}
};
int main()
{
int arr[]={54,35,48,36,27,12,44,44,8,14,26,17,28};
InsertionSort a;
a.insertionSort(arr,13);
for(int i=0;i<13;i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
}