算法学习之排序:插入排序
类比打扑克插牌,左侧为排好序区域,右侧第二张牌开始为未排序区域,与右侧对比,若比其小,左侧右移;否则插入当前位置;
//插入排序using namespace std;void InsertSort(int a[], int n){//左侧第一个元素为已排序区域for (int i = 1; i < n; i++){//待排序元素,从第二个元素开始int temp = a[i];//与排好序区域对比int j = i - 1;for (; j >= 0 && a[j] > temp; j--)//若左侧已拍好序元素大于待排序元素,将排序元素右移,即右侧元素赋值为左侧元素a[j + 1] = a[j];//将待排序元素插入空位a[j + 1] = temp;}return;}int main(){cout << "请输入排序数组元素个数:" << endl;int size = 0;cin >> size;int* p = new int[size];cout << "请输入排序数组元素:" << endl;for (int i = 0; i < size; i++)cin >> p[i];InsertSort(p, size);for (int i = 0; i < size; i++)cout << p[i]<<" ";cout << endl;delete [] p;p = NULL;return 0;}
