直接插入排序
前言
直接插入排序主要在于将未排序的数插入已经排序的排序的部分后仍然保持有序,具体做法一般是从后往前枚举已有序部分来确定插入位置
排序算法
void insertSort(int a[], int n){
for(int i = 1; i < n; i++){ //进行n-1趟排序
int temp = a[i],j = i; //temp临时存放a[i],j从i开始往前枚举
while(j > 0 && temp < a[j - 1]){ //只要temp小于前一个元素a[j-1]
a[j] = a[j - 1];//把a[j-1]后移一位至a[j]
j--;
}
a[j] = temp;//插入位置为j
}
}
案例
#include<iostream>
using namespace std;
//直接插入排序
void insertSort(int a[], int n){
for(int i = 1; i < n; i++){ //进行n-1趟排序
int temp = a[i],j = i; //temp临时存放a[i],j从i开始往前枚举
while(j > 0 && temp < a[j - 1]){ //只要temp小于前一个元素a[j-1]
a[j] = a[j - 1];//把a[j-1]后移一位至a[j]
j--;
}
a[j] = temp;//插入位置为j
}
}
int main(){
int a[10] = {3, 1, 4, 2, 9, 5, 6, 9};
int n = 8;
insertSort(a,n);
for(int i = 0; i < n; i++){
cout<<a[i]<<" ";
}
return 0;
}