C 如何在BubbleSort算法中求逆序

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

我正在研究这段代码,它使用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]
改为
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()
使用函数指针进行比较,并调用该指针来比较元素。它可用于封装特殊的排序顺序,例如“奇数值在偶数值升序之前递减”。它还允许您对不同的订单使用单个排序功能。