vlambda博客
学习文章列表

算法学习之排序:插入排序

类比打扑克插牌,左侧为排好序区域,右侧第二张牌开始为未排序区域,与右侧对比,若比其小,左侧右移;否则插入当前位置;




//插入排序#include <iostream>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;}