第一个元素在插入排序期间未排序

The 1st element doesn't get sorted during insertion sort

本文关键字:排序 插入排序 元素 第一个      更新时间:2023-10-16
#include <stdio.h>
#include <conio.h>
int main() 
{
    int a[6] = {5,2,4,6,1,3};
    int j,i,k,cnt=1;
    for (j=1;j<7;j++)
    {
        k = a[j];
        i = j-1;
        while(i>0 && a[i]>k)
        {
            a[i+1] = a[i];
            i = i-1;
        }
        a[i+1] = k;
    }
    for(i=0;i<6;i++) 
    {
        printf("n Final op %d",a[i]);
    }
    getch();
}

我正在传递静态数组中的一些元素,但第一个元素是值

a[0]没有排序,但从a[1]a[5]的其余值被排序

问题是>0

while(i>0 

应改为

while(i>=0 

此外,在

    k = a[j];

j==6.

while(i>-1 && a[i]>k)
        {
           a[i+1] = a[i];
           i = i-1;
        }

只需进行此更改,您的插入排序即可完美运行。

它没有被排序,因为数组从 a[0] n 开始,当它在 a[0] 时被终止,所以不访问它的元素。

希望对您有所帮助