标签:asc stdio.h 空间复杂度 存储 int value 从后往前 std 插入
每次在现有已经排好的数组的基础上排入一个新的数组项。
function insertionSort(arr) {
const len = arr.length;
for (let i = 1; i < len; i++) { //在arr[0,...,i-1]中插入arr[i]
const toInsertValue = arr[i];
let j;
for (j = i; j >0 && arr[j-1] > toInsertValue; j--) { //找到一个比arr[i]大的项,就把这个项往后挪一项。因为最后一项就是toInsertValue,所以该值一直可以通过toInsertValue访问,故也不必另做保存。
arr[j] = arr[j-1];
}
arr[j] = toInsertValue;//内循环结束得到的arr[j-1]是第一个比arr[i]小的值,那么就把arr[i]存储在此处的arr[j]上。而之前的arr[j]已经在上一轮循环中存储到了arr[j+1]中
}
}
#include<stdio.h>
#include<stdlib.h>
void insertion(int *list,int n)
{
int i,j,t;
for(i=1;i<n;i++)//待插入的是list[1]到list[n-1]
{
if(list[i]<list[i-1])
{
t=list[i];
list[i]=list[i-1];
j=i;
while(t<list[j-1]&&j>=1)
{
list[j]=list[j-1];
j--;
}
list[j]=t;
}
}
}
main()
{
int list[10],n=10,i;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&list[i]);
}
insertion(list,10);
for(i=0;i<10;i++)
{
printf("%d\t",list[i]);
}
system("pause");
}
标签:asc stdio.h 空间复杂度 存储 int value 从后往前 std 插入
原文地址:https://www.cnblogs.com/Bonnie3449/p/9574549.html