实现逻辑
① 从第一个元素开始,该元素可以认为已经被排序
② 取出下一个元素,在已经排序的元素序列中从后向前扫描
③如果该元素(已排序)大于新元素,将该元素移到下一位置
④ 重复步骤③,直到找到已排序的元素小于或者等于新元素的位置
⑤将新元素插入到该位置后
⑥ 重复步骤②~⑤
cpp
void print_array(int a[], int n){
for (int i = 0; i < n; ++i){
cout << a[i] << " ";
}
cout << endl;
}
void insertSort(int arr[], int nSize){
for (int i = 1; i < nSize; ++i){
int value = arr[i];
int ipos = i;
while(ipos >= 1 && arr[ipos - 1] < value){
arr[ipos] = arr[ipos - 1];
ipos--;
}
arr[ipos] = value;
}
}
int main(){
int arr[] = {10, 8, 11, 7, 4, 12, 9, 6, 5, 3};
int len = sizeof(arr)/sizeof(arr[0]);
cout << "排序前:";
print_array(arr, len);
insertSort(arr, len);
cout << "排序后:";
print_array(arr, len);
return 0;
}
输出结果: