有十个地区的面积要求对他们按从小到大的顺序排序

有十个地区的面积要求,对他们按由小到大的顺序排序,将相邻两个运用冒泡排序

#include <stdio.h>

void bubble_sort(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 area[] = {10, 5, 20, 15, 30, 25, 40, 35, 50, 45};
    int n = sizeof(area) / sizeof(area[0]);

    bubble_sort(area, n);

    // 打印排序后的结果
    for (int i = 0; i < n; i++) {
        printf("%d ", area[i]);
    }
    printf("\n");

    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7432691
  • 这篇博客也不错, 你可以看下删除排序数组的重复项(给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间)
  • 除此之外, 这篇博客: 虚函数表构成、地址详细说明中的 3.测试类中无虚函数,是否存在虚函数表 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    
    using namespace std;
    
    
    class Test
    {
    	 void TestFun1() {cout << "TestFun1" <<endl;}
    	 void TestFun2() {cout << "TestFun2" <<endl;}
    	 void TestFun3() {cout << "TestFun3" <<endl;}
    };
    
    typedef void (*Fun)(void);
    
    int main()
    {
    	Test test;
    	cout << "类对象地址:" << &test << endl;
    	cout << "虚函数表地址: " << (int*)*(int*)&test << endl;
    	cout << "虚函数TestFun1地址:" <<(int*)*(int*)&test << endl;
    	cout << "虚函数TestFun2地址:" <<(int*)*(int*)&test + 1 << endl;
    	cout << "虚函数TestFun3地址:" <<(int*)*(int*)&test + 2 << endl;
    
    	system("pause");
    }
    

    以下为输出:

      类对象地址:0041FCEB
      虚函数表地址: CCCCCCCC
      虚函数TestFun1地址:CCCCCCCC
      虚函数TestFun2地址:CCCCCCD0
      虚函数TestFun3地址:CCCCCCD4
      请按任意键继续. . .
    

    由此可见虚函数表地址为错误,第一条确认

  • 您还可以看一下 小布匠心学堂老师的对话系统技能平台技术实践课程中的 业务领域建模,建设通用能力地图小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以解决该问题。

    首先需要准备一个存储地区面积的数组,然后使用选择排序算法将它们按面积从小到大排序,最后使用冒泡排序算法将相邻两个地区排序即可。

    具体步骤如下:

    1. 定义地区结构体,包含地区名称和面积两个字段。
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_NAME_LEN 10  // 地区名称最大长度
    
    // 定义地区结构体
    struct Area {
        char name[MAX_NAME_LEN + 1];  // 地区名称
        int area;  // 地区面积
    };
    
    1. 定义一个存储地区信息的数组,通过 scanf() 函数读取用户输入的地区信息。
    #define MAX_AREA_NUM 10  // 地区数量最大值
    
    int main() {
        struct Area areaList[MAX_AREA_NUM];
        int areaNum = 0;
    
        // 读入地区信息
        printf("请输入地区名称和面积,以空格分隔,输入#结束:\n");
        while (areaNum < MAX_AREA_NUM) {
            scanf("%s", areaList[areaNum].name);
            if (strcmp(areaList[areaNum].name, "#") == 0) {
                break;
            }
            scanf("%d", &areaList[areaNum].area);
            areaNum++;
        }
    }
    
    1. 使用选择排序算法将地区按照面积从小到大排序。
    void selectionSort(struct Area areaList[], int areaNum) {
        for (int i = 0; i < areaNum - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < areaNum; j++) {
                if (areaList[minIndex].area > areaList[j].area) {
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                struct Area temp = areaList[minIndex];
                areaList[minIndex] = areaList[i];
                areaList[i] = temp;
            }
        }
    }
    
    1. 使用冒泡排序算法将相邻两个地区排序。
    void bubbleSort(struct Area areaList[], int areaNum) {
        for (int i = 0; i < areaNum - 1; i++) {
            for (int j = 0; j < areaNum - i - 1; j++) {
                if (areaList[j].area > areaList[j + 1].area) {
                    struct Area temp = areaList[j];
                    areaList[j] = areaList[j + 1];
                    areaList[j + 1] = temp;
                }
            }
        }
    }
    
    1. 完整代码如下:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_NAME_LEN 10  // 地区名称最大长度
    #define MAX_AREA_NUM 10  // 地区数量最大值
    
    // 定义地区结构体
    struct Area {
        char name[MAX_NAME_LEN + 1];  // 地区名称
        int area;  // 地区面积
    };
    
    // 选择排序
    void selectionSort(struct Area areaList[], int areaNum) {
        for (int i = 0; i < areaNum - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < areaNum; j++) {
                if (areaList[minIndex].area > areaList[j].area) {
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                struct Area temp = areaList[minIndex];
                areaList[minIndex] = areaList[i];
                areaList[i] = temp;
            }
        }
    }
    
    // 冒泡排序
    void bubbleSort(struct Area areaList[], int areaNum) {
        for (int i = 0; i < areaNum - 1; i++) {
            for (int j = 0; j < areaNum - i - 1; j++) {
                if (areaList[j].area > areaList[j + 1].area) {
                    struct Area temp = areaList[j];
                    areaList[j] = areaList[j + 1];
                    areaList[j + 1] = temp;
                }
            }
        }
    }
    
    int main() {
        struct Area areaList[MAX_AREA_NUM];
        int areaNum = 0;
    
        // 读入地区信息
        printf("请输入地区名称和面积,以空格分隔,输入#结束:\n");
        while (areaNum < MAX_AREA_NUM) {
            scanf("%s", areaList[areaNum].name);
            if (strcmp(areaList[areaNum].name, "#") == 0) {
                break;
            }
            scanf("%d", &areaList[areaNum].area);
            areaNum++;
        }
    
        // 按面积从小到大排序
        selectionSort(areaList, areaNum);
    
        // 冒泡排序
        bubbleSort(areaList, areaNum);
    
        // 输出结果
        printf("按面积从小到大排序:\n");
        for (int i = 0; i < areaNum; i++) {
            printf("%s %d\n", areaList[i].name, areaList[i].area);
        }
    
        return 0;
    }
    

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