插入排序
算法笔记
算法笔记及自我总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、插入排序
C++版
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
void InsertSort(int* arr, int n)
{
for (int j = 1; j < n; j++)
{
//设置key作为待插入有序集合的元素
int key = arr[j];
//设置i和j作为数组下标,用于比较前后两个数
int i = j - 1;
/*
* i从0开始,j从1开始
* 当循环开始时,如果元素key小于它前面的数值
* 那么,就将key先提出来,key前面的数均向后移一位
* 当key的值不等于j遍历后的数时,插入数组,形成有序数组
*/
for (; i >= 0; i--)
{
if (key < arr[i])
{
arr[i + 1] = arr[i];
}
else
break;
}
if(key != arr[j])
arr[i + 1] = key;
}
}
void Print(int* arr,int n)
{
cout << "排序后:" << endl;
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
}
int main()
{
int n;
cin >> n;
int arr[] = { 2,3,6,1,0,7,9,8,4,5 };
InsertSort(arr,n);
Print(arr, n);
system("pause");
return 0;
}
Python版
def InsertSort(alist):
for j in range(1,len(alist)):
key = alist[j]
i = j-1
while i>=0:
if (key < alist[i]):
alist[i+1] = alist[i]
i=i-1
else:
break
alist[i+1] = key
return alist
if __name__=='__main__':
alist = [6,1,0,3,5,8,9,7,4,2]
alist1 = InsertSort(alist)
print(alist1)
总结
插入排序其实就是将key作为插入的数,然后每次将选择插入的数key与它前一位数进行比较,如果小于则将前面的数往后移一位,否则就插入到这个位置。