【C++】插入排序
性能分析:
时间复杂度:O(n^2)
空间复杂度:O(1)
但是综合来讲,要比冒泡排序和选择排序好一些。
#include<iostream> #include<vector> using namespace std; int main() { // 首先找出待排序列中最小的数,然后用这个数和原序列中的第一个数交换位置; // 其次,找出第二小的和原第二个数交换位置; // 依次顺序直到找到第二大的数,之后原数列完全变成有序数列. int data[] = { 3,0,5,2,7,8,9,6,1 }; //获取序列元素个数 int length = 9; for (int i = 1; i < length; i++) { int key = data[i]; int j = i -1; while (j >= 0 && data[j] > key) { data[j + 1] = data[j];//将比key值大的数往后移 j--; } data[j + 1] = key;//将比key大的往后移之后,找到了要插入的位置,将key插入 } for (int i = 0; i < length; i++) { cout << data[i] << " "; } }