int insort(int arr[],int n)
{
int j;
for(int i=0;i<n-1;i++)
{
int x=arr[i];
for(j=i;j>=0;j--)
{
if(x<arr[j])
{
arr[j+1]=arr[j];}
else break;
}
arr[j+1]=x;
}
}
结果输出全是数组最后一个数
请问有人知道这是为什么吗
void InsertSort(int *arr,int len)//插入排序默认步长为1,使用于小量级序列
{
int temp = 0;
int i = 0,j = 0;
for(i = 1;i < len;i++){//第一个循环,插入排序是从第二个元素开始排序的,所以此处的i = 1
if(arr[i] < arr[i - 1]){//限定条件:后面的元素小于前面的元素
temp = arr[i];//利用临时变量保存后面的元素
for(j = i - 1;j >= 0 && arr[j] > temp;j--){//这层循环是为了检查前面已经排序好的元素,循环执行的条件就是j下标不会低于0下标且前面已经排序好的元素出现了比临时变量更大的元素。
arr[j + 1] = arr[j];//将前面已经排序好的元素统一向后迁移一位
}
arr[j + 1] = temp;//将temp中存放的值赋值给需要插入的位置上
}
}
}