插入排序学习
插入排序:简单来说,对一个序列,无序的元素一个个地插入已排序的部分。
C++实现:
#include<iostream>
//交换数据
inline void my_swap(int &a, int &b)
{
int temp = a;
a = b;
b =temp;
}
//插入排序
void insert_sort(int *arr,int n)
{
//priot为了保存哨兵元素
int pviot = 0, j = 0;
//第一个元素有序,因此从i=1开始
for (int i = 1; i < n; ++i)
{
pviot = arr[i];
j = i-1;
//如果哨兵元素之前的元素比自己大,则不断移位
while(j >= 0 && arr[j] >= pviot)
{
my_swap(arr[j],arr[j+1]);
--j;
}
//放置哨兵元素到适当位置
arr[j+1] = pviot;
}
}
//打印数组
void dis_arr(int *a, int n)
{
std::cout << "The array is: ";
for (int i = 0; i< n;++i)
{
std::cout << a[i] << " ";
}
std::cout << std::endl;
}
int main()
{
int arr[] = {1,-1,90,20,8,-80};
int n = sizeof(arr)/sizeof(*arr);
dis_arr(arr,n);
insert_sort(arr,n);
dis_arr(arr,n);
}

浙公网安备 33010602011771号