用冒泡法从大到小排序

img


冒泡法从大到小排序 可以有人看看哪里错了吗🥹
每次运行都是原始的数组 根本就没排序啊 有没有人能指出问题在哪🥹

j<=0这个条件导致根本没有循环
应该是j>=0


#include <stdio.h>  
  
void bubbleSort(int arr[], int n) {  
    int i, j, temp;  
    for (i = 0; i < n-1; i++) {  
        for (j = 0; j < n-i-1; j++) {  
            if (arr[j] > arr[j+1]) {  
                temp = arr[j];  
                arr[j] = arr[j+1];  
                arr[j+1] = temp;  
            }  
        }  
    }  
}  
  
int main() {  
    int arr[] = {5, 2, 8, 3, 1, 9, 4};  
    int n = sizeof(arr) / sizeof(arr[0]);  
    bubbleSort(arr, n);  
    printf("Sorted array: ");  
    for (int i = 0; i < n; i++) {  
        printf("%d ", arr[i]);  
    }  
    return 0;  
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7718817
  • 你也可以参考下这篇文章:多种方法实现数组元素从大到小排序;冒泡排序
  • 除此之外, 这篇博客: 【 英文单词排序 】 本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。中的 输出格式: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    输出为排序后的结果,每个单词后面都额外输出一个空格。
    输入样例:
    blue
    red
    yellow
    green
    purple
    #
    输出样例:
    red blue green yellow purple
    #include <stdio.h>
    #include <string.h>
    main()
    {
        char str[20][10],t[20],str1[10];
        int i,j,n=0;
        while(1)
    	{
        	scanf("%s",str1);
        	if(str1[0]=='#')
    	    {
        		break;
        	}
            else
    		{
            strcpy(str[n],str1);
            n++;
            }
        }
        for(i=0;i<n-1;i++)
        	for(j=0;j<n-i-1;j++)
    	    {
                if(strlen(str[j])>strlen(str[j+1]))
    		    {
                   strcpy(t,str[j]);
                   strcpy(str[j],str[j+1]);
                   strcpy(str[j+1],t);
                }
            }
        for(i=0;i<n;i++)
    	{
            printf("%s ",str[i]);
        }
    }

  • 您还可以看一下 吴刚老师的【吴刚大讲堂】电商品牌文案设计方法课程中的 电商品牌文案设计方法介绍小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    冒泡排序是一种基本的排序算法,它的基本思想是通过多次比较和交换来实现排序。具体步骤如下:

    1. 定义一个数组,将待排序的数据存入数组中。
    arr = [6, 3, 8, 2, 9, 1]
    
    1. 外层循环控制排序的趟数,需要遍历整个数组。
    for i in range(len(arr)):
    
    1. 内层循环控制每一趟排序的次数,每次比较相邻的两个数,并根据大小关系进行交换。
    for j in range(len(arr)-1-i):
        if arr[j] < arr[j+1]:
            arr[j], arr[j+1] = arr[j+1], arr[j]
    
    1. 最后输出排序结果。

    全部代码如下:

    arr = [6, 3, 8, 2, 9, 1]
    
    for i in range(len(arr)):
        for j in range(len(arr)-1-i):
            if arr[j] < arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    
    print(arr)
    

    如果运行结果是原始的数组,那么可能是因为代码中的逻辑错误或者是没有正确实现冒泡排序算法。可以逐步调试代码,查看运行过程中变量的取值,以便快速定位问题所在。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^