C 如何在BubbleSort算法中求逆序
我正在研究这段代码,它使用BubbleSort获取程序中插入的相反顺序(从高到低)或随机20个数据。 结果应该是C 如何在BubbleSort算法中求逆序,c,bubble-sort,C,Bubble Sort,我正在研究这段代码,它使用BubbleSort获取程序中插入的相反顺序(从高到低)或随机20个数据。 结果应该是结果(从高到低):20 19 18 17 16 15 14 13 11 10 9 8 7 6 5 4 3 2 1 然而,我得到的是12345678910111213151617181920 我知道如果我把if(data[j]data[j-1]),我就能得到正确的答案 但是,我想问一下,是否有其他方法可以更改以下代码以使其符合相反的顺序 temp = data[j]; da
结果(从高到低):20 19 18 17 16 15 14 13 11 10 9 8 7 6 5 4 3 2 1
然而,我得到的是12345678910111213151617181920
我知道如果我把if(data[j]
改为if(data[j]>data[j-1])
,我就能得到正确的答案
但是,我想问一下,是否有其他方法可以更改以下代码以使其符合相反的顺序
temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp;
整个代码如下:
#include <stdio.h>
#define COUNT 20
int main()
{
int data[COUNT]
= { 5 , 15 , 7 , 20 , 1 ,
4 , 10 , 2 , 8 , 11,
9 , 6 , 13, 18 , 3,
16, 12 , 14, 17 , 19 };
int temp = 0;
printf("random data : ");
for (int i = 0; i < COUNT; i++)
{
printf("%d ", data[i]);
}
//BubbleSort
for (int i = 0; i < COUNT - 1; i++)
{
for (int j = COUNT - 1; j > i; j--)
{
if (data[j] < data[j - 1])
{
temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp;
}
}
}
//print
printf("\n\nresult (high to low) : ");
for (int i = 0; i < COUNT; i++)
{
printf("%d ", data[i]);
}
return 0;
}
#包括
#定义计数20
int main()
{
整数数据[计数]
= { 5 , 15 , 7 , 20 , 1 ,
4 , 10 , 2 , 8 , 11,
9 , 6 , 13, 18 , 3,
16, 12 , 14, 17 , 19 };
内部温度=0;
printf(“随机数据:”);
for(int i=0;ii;j--)
{
if(data[j]
一种方法是反转条件。这可以通过更改指定的零件来归档
temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp;
temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp;
到
另一种方法是在排序后反转数组。这可以通过更改指定的零件来归档
temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp;
temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp;
到
temp=data[j];
数据[j]=数据[j-1];
数据[j-1]=温度;
}}}
对于(int i=0;i 任何排序算法的基础是数组的两个元素之间的比较结果。将该比较从<代码> <代码>代码> < /代码>是唯一改变产品排序的方法。是的。其中之一是在排序后颠倒数组。这可以通过改变指定的PAR来实现。t to…temp;}}}/*在这里反转数组的代码*/{{{{{code>请注意,C标准qsort()
使用函数指针进行比较,并调用该指针来比较元素。它可用于封装特殊的排序顺序,例如“奇数值在偶数值升序之前递减”。它还允许您对不同的订单使用单个排序功能。