解题思路:
注意事项:
参考代码:
方法1:使用冒泡排序
#include // 冒泡排序函数 void bubbleSort(int arr[], int n) { int temp; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (arr[j] < arr[j + 1]) { // 按从大到小排序,如果前一个元素小于后一个元素,则交换它们 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[10]; // 从用户输入读取10个整数并存储在数组中 for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } // 使用冒泡排序将数组按从大到小排序 bubbleSort(arr, 10); // 打印排序后的数组 for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
方法2:使用选择排序
#include // 选择排序函数 void selectionSort(int arr[], int n) { int temp; for (int i = 0; i < n - 1; i++) { int maxIndex = i; // 假定当前未排序部分的第一个元素是最大的 for (int j = i + 1; j < n; j++) { if (arr[j] > arr[maxIndex]) { // 找到更大的元素 maxIndex = j; } } // 将最大的元素与未排序部分的第一个元素交换 temp = arr[i]; arr[i] = arr[maxIndex]; arr[maxIndex] = temp; } } int main() { int arr[10]; // 从用户输入读取10个整数并存储在数组中 for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } // 使用选择排序将数组按从大到小排序 selectionSort(arr, 10); // 打印排序后的数组 for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
方法3:使用qsort快速排序函数
qsort 函数是C标准库中用于进行快速排序的函数,它允许你对一个数组中的元素进行排序。以下是 qsort 函数的基本用法:
void qsort(void *base, size_t numElements, size_t sizeOfElement, int (*comparator)(const void *, const void *));
下面是各个参数的解释:
base:指向要排序的数组的起始地址的指针。
numElements:数组中的元素数量。
sizeOfElement:每个元素的大小(以字节为单位)。
comparator:比较函数的指针,用于确定元素的相对顺序。
比较函数 comparator 接受两个 const void * 类型的指针参数,这两个指针分别指向数组中的两个元素。比较函数返回一个整数值,用于表示这两个元素的相对顺序。根据返回值的不同,qsort 函数会按升序或降序对数组中的元素进行排序。
如果比较函数返回负值,表示第一个元素应该排在第二个元素之前。
如果比较函数返回正值,表示第一个元素应该排在第二个元素之后。
如果比较函数返回零,表示两个元素相等,它们的相对位置不变。
#include #include // 比较函数,用于qsort排序 int compare(const void *a, const void *b) { int num1 = *(int*)a; // 将a转换为int指针,然后获取值 int num2 = *(int*)b; // 将b转换为int指针,然后获取值 if (num1 < num2) { return 1; // 如果num1小于num2,返回1,表示应该交换它们的位置 } else if (num1 > num2) { return -1; // 如果num1大于num2,返回-1,表示不需要交换它们的位置 } else { return 0; // 如果num1等于num2,返回0,表示它们相等 } } int main() { int arr[10]; // 从用户输入读取10个整数并存储在数组中 for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } // 使用qsort对数组进行排序,使用自定义的compare函数进行比较 qsort(arr, 10, sizeof(arr[0]), compare); // 打印排序后的数组 for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; }
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:569 |
C二级辅导-统计字符 (C语言代码)浏览:503 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
C语言程序设计教程(第三版)课后习题9.1 (Java代码)浏览:471 |
【密码】 (C语言代码)浏览:333 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1082 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:521 |
【金明的预算方案】 (C++代码)浏览:841 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:576 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:916 |