插入排序简单来说就是一堆数把分两块来看,一块是有序区,一块是无序区。把无序区的数插入到有序区。
插入排序适合量小(小于一千)的排序应用,特别适合数据基本有序的情况最好情况下的时间复杂度是O(n),最差的时间复杂度是O()





1、将列表的第一个元素视为已经排序好的区域
2、将未排序区域的元素的第一个元素拿到去和已排序好的区域的元素进行比较
3、去找到排序区里比我现在拿到的元素小的或者等于我这个元素的元素,把这个未排序的元素放在这个元素的后面。插入元素的后一个位置的元素后要后移一位

将列表的第一个元素视为已经排序好的区域

将未排序区域的元素的第一个元素拿到去和已排序好的区域的元素进行比较

插入元素的后一个位置的元素后要后移一位

该情况属于在排序区没有找到比该元素小的元素的情况,那就是将这个元素插入到li[0]这个位置对应到下方代码就是while循环中当j<0时跳出循环把li[j+1]=tmp
语言:python
def insert(li):
for i in range(1,len(li)):
tmp=li[i]
j=i-1
while j>=0 and li[j]>tmp:
li[j+1]=li[j]
j-=1
li[j+1]=tmp
li=[5,4,3,2,1]
insert(li)
print(li)
C++去实现插入排序
int main(){
int arry[]={3,2,5,1};
int n=sizeof(arr)/sizeof(arry[0]);
insert(arr,n);
count<<"最后的排序结果:"
for(i=0,i<10,i++){
count<<arr[i]<<"";
}
return 0;
}
void insert(in array,int n):
for(i=1,i<n;i++){
int tmp=array[i];
int j=i-1;
}
while (j>0 and li[j]>tmp){
array[j+1]=array[j];
j--;
array[j+1]=tmp;
}
}
本文详细介绍了插入排序算法的工作原理,包括步骤和示例,以及其在小规模数据和基本有序情况下的优势,还提供了Python和C++的代码实现。
201

被折叠的 条评论
为什么被折叠?



