第三题:插入排序
Posted 蚂蚁伙记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三题:插入排序相关的知识,希望对你有一定的参考价值。
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
如对列表:6,3,8,7,2,4,9,1,0,5 进行插入排序
I=1 下标 1 开始
0:==6,3,8,7,2,4,9,1,0,5
Start…….
1:==[3,6],8,7,2,4,9,1,0,5
2:==[3,6,8],7,2,4,9,1,0,5
3:==[3,6,7,8],2,4,9,1,0,5
4:== [2,3,6,7,8],4,9,1,0,5
5:==[2,3, 4,6,7,8],9,1,0,5
6:==[2,3, 4,6,7,8,9],1,0,5
7:== [1,2,3, 4,6,7,8,9],0,5
8:==[0,1,2,3, 4,6,7,8,9],5
9:== [0,1,2,3, 4, 5,6,7,8,9]
End…….
java 编写:
public static void inserTionSort(int[] sortList){
/*
* 插入排序
*/
int tmpValue=0;
for(int i =1;i<sortList.length;i++){
int j=i-1;
if (sortList[j]>sortList[i]){
tmpValue=sortList[i];
while(j>=0 && tmpValue<sortList[j]){
sortList[j+1]= sortList[j];
j--;
}
sortList[j + 1] = tmpValue;
}
}
}
测试:
int sortList[] = {6,3,8,7,2,4,9,1,0,5};
inserTionSort(sortList);
for(int i=0;i<sortList.length;i++){
System.out.printf("%d,",sortList[i]);
}
输出结果:0,1,2,3,4,5,6,7,8,9,
c++ 编写:
void inserTionSort(int sortList[],int len){
int tmpValue =0;
for(int i=1;i<len;i++){
int j=i-1;
if (sortList[i]<sortList[j]) {
tmpValue=sortList[i];
while (j>=0 && tmpValue<sortList[j]){
sortList[j+1]=sortList[j];
j--;
}
sortList[j+1]=tmpValue;
}
}
}
测试
int sortList[10]={6,3,8,7,2,4,9,1,0,5};
int len=sizeof(sortList) / sizeof(int);
inserTionSort(sortList,len);
for(int i=0;i<len;i++){
printf("%d,",sortList[i]);
}
输出结果:0,1,2,3,4,5,6,7,8,9,
python 编写:
def inserTionSort(sortList):
sortLen=len(sortList)
for i in range(1,sortLen):
j=i-1
if (sortList[j]>sortList[i]):
tmpValue=sortList[i]
while( j>=0 and sortList[j]>tmpValue):
sortList[j+1]=sortList[j]
j=j-1
sortList[j + 1] = tmpValuesortList=[6,3,8,7,2,4,9,1,0,5]
inserTionSort(sortList)
for i in range(0,len(sortList)):
print(sortList[i],end=',')
输出结果:0,1,2,3,4,5,6,7,8,9,
今天就到这了,明天继续,希望可以坚下来!加油 ! KONG!
以上是关于第三题:插入排序的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化