插入排序
Insertion sorting
我正在编写一个程序来使用插入排序对数字列表进行排序,但有些事情我不明白。
int[] a = { 5, 3, 8, 2, 1 };
for (int i = 0; i < 4; i++)
{
int key = a[i];
int j = i +1;
int nextElement = a[j];
if (nextElement < key)
{
swap(ref nextElement, ref key);
}
else
{
}
}
for (int i =0;i<a.Length;i++)
{
Console.WriteLine("{0}", a[i]);
}
}
static void swap(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
这是我到目前为止所写的内容,但我在实际理解如何实现该算法时遇到了困难。它只是查看前面的元素并将元素排序到它们中吗?
问题是您正在交换 nextElement
和 key
而不是 a[i]
和 a[j]
。
Int
是 value type,在您的情况下 nextElement
等于 a[i]
,但如果您更改 nextElement
- a[i]
值将不会更改.
所以你需要交换 a[i]
和 a[j]
。
if (a[i] > a[j]) {swap (ref a[i], ref a[j]); }
或者让交换函数以数组和索引作为参数进行交换
void swap (int a[], int i, int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
然后您可以使用
交换号码
if (a[i] > a[j]) {swap (a, i, j);}
包括
int main()
{
int i=0,j=0,k=0,l=0,key=0;
int a[20];
printf("Enter the Elements to be sorted\n");
for (l=0;l<=5;l++)
{
scanf("%d", &a[l]);
}
printf("the value of l is %d", l);
printf("The Entered array elements are \n");
for(k=0;k<l;k++)
{
printf("%d",a[k]);
}
for(j=1;j<l;j++)
{
key= a[j];
i= j-1;
while (i>=0 & a[i]>key)
{
a[i+1] = a[i];
i=i-1;
}
a[i+1]=key;
}
printf("The Sorted array is \n");
for (l=0;l<6;l++)
{
printf("%d", a[l]);
}
}
我正在编写一个程序来使用插入排序对数字列表进行排序,但有些事情我不明白。
int[] a = { 5, 3, 8, 2, 1 };
for (int i = 0; i < 4; i++)
{
int key = a[i];
int j = i +1;
int nextElement = a[j];
if (nextElement < key)
{
swap(ref nextElement, ref key);
}
else
{
}
}
for (int i =0;i<a.Length;i++)
{
Console.WriteLine("{0}", a[i]);
}
}
static void swap(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
这是我到目前为止所写的内容,但我在实际理解如何实现该算法时遇到了困难。它只是查看前面的元素并将元素排序到它们中吗?
问题是您正在交换 nextElement
和 key
而不是 a[i]
和 a[j]
。
Int
是 value type,在您的情况下 nextElement
等于 a[i]
,但如果您更改 nextElement
- a[i]
值将不会更改.
所以你需要交换 a[i]
和 a[j]
。
if (a[i] > a[j]) {swap (ref a[i], ref a[j]); }
或者让交换函数以数组和索引作为参数进行交换
void swap (int a[], int i, int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
然后您可以使用
交换号码if (a[i] > a[j]) {swap (a, i, j);}
包括
int main()
{
int i=0,j=0,k=0,l=0,key=0;
int a[20];
printf("Enter the Elements to be sorted\n");
for (l=0;l<=5;l++)
{
scanf("%d", &a[l]);
}
printf("the value of l is %d", l);
printf("The Entered array elements are \n");
for(k=0;k<l;k++)
{
printf("%d",a[k]);
}
for(j=1;j<l;j++)
{
key= a[j];
i= j-1;
while (i>=0 & a[i]>key)
{
a[i+1] = a[i];
i=i-1;
}
a[i+1]=key;
}
printf("The Sorted array is \n");
for (l=0;l<6;l++)
{
printf("%d", a[l]);
}
}