插入排序
空间复杂度:O(1)
时间复杂度为O(N2)
升序排列
1 #include <iostream> 2 using namespace std; 3 4 void insertion_sort(int b[],int size) 5 { 6 for(int i = 1; i < size; ++i) //从第二个元素开始,到最后一个元素截止 7 { 8 for(int j = i; j > 0 && b[j-1] > b[j]; --j) //逐个移位 然后插入 9 { 10 int tmp = b[j]; 11 b[j] = b[j-1]; 12 b[j-1] = tmp; 13 } 14 } 15 } 16 17 int main() 18 { 19 int a[] = {100, 23, 15, 7, 8}; //输入数组 20 int size = sizeof(a) / sizeof(int); //计算数组a的元素个数 21 insertion_sort(a,size); 22 for(int i = 0; i < size; ++i) 23 cout << a[i] << " "; 24 cout << endl; 25 }
降序排列
1 #include <iostream> 2 using namespace std; 3 void insertion_sort(int b[],int size) 4 { 5 for(int i=1;i<size;i++) 6 { 7 for(int j=i;j>0&&b[j-1]<b[j];j--) 8 { 9 int tem=b[j]; 10 b[j]=b[j-1]; 11 b[j-1]=tem; 12 } 13 } 14 } 15 int main () 16 { 17 int a[]={150,1,2,3,4,5,6,7,8,9}; 18 int size=sizeof(a)/sizeof(int); 19 insertion_sort(a,size); 20 for(int i=0;i<size;i++) 21 cout<<a[i]<<" "; 22 cout<<endl; 23 }