C语言实现正整数降序排序:选择、冒泡、插入排序
C语言实现正整数降序排序:选择、冒泡、插入排序
本示例代码演示了如何使用C语言实现正整数降序排序,并提供了三种常用的排序算法:选择排序、冒泡排序和插入排序,供您选择使用。
问题描述:
输入一个正整数n(1 <n≤10),再输入n个整数,将它们从大到小排序后输出。(利用教材中介绍的选择、冒泡、插入排序中的一个算法完成排序操作)
输入形式:
从键盘输入一个正整数n和n个整数。每个整数按照%4d格式输出,输出结束没有换行符。
代码示例:
#include <stdio.h>
// 选择排序
void selectionSort(int arr[], int n) {
int i, j, max, temp;
for (i = 0; i < n-1; i++) {
max = i;
for (j = i+1; j < n; j++) {
if (arr[j] > arr[max]) {
max = j;
}
}
if (max != i) {
temp = arr[i];
arr[i] = arr[max];
arr[max] = temp;
}
}
}
// 冒泡排序
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;
}
}
}
}
// 插入排序
void insertionSort(int arr[], int n) {
int i, j, key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i-1;
while (j >= 0 && arr[j] < key) {
arr[j+1] = arr[j];
j = j-1;
}
arr[j+1] = key;
}
}
int main() {
int n;
printf('请输入正整数n:');
scanf('%d', &n);
int arr[n];
printf('请输入%d个整数:', n);
for (int i = 0; i < n; i++) {
scanf('%4d', &arr[i]);
}
// 使用选择排序
selectionSort(arr, n);
// 使用冒泡排序
// bubbleSort(arr, n);
// 使用插入排序
// insertionSort(arr, n);
printf('排序后的结果为:');
for (int i = 0; i < n; i++) {
printf('%4d', arr[i]);
}
return 0;
}
代码说明:
- 该代码包含三个排序算法的实现:
selectionSort、bubbleSort和insertionSort。 - 默认情况下,代码使用选择排序算法进行排序。
- 您可以通过取消注释
bubbleSort或insertionSort函数调用来选择使用其他排序算法。 - 代码中包含了详细的注释,方便理解代码的逻辑和功能。
运行方法:
- 将代码保存为 .c 文件,例如 sort.c。
- 使用 GCC 编译器编译代码:
gcc sort.c -o sort - 运行编译后的程序:
./sort
程序会提示您输入正整数 n 和 n 个整数,并最终输出排序后的结果。
学习建议:
- 仔细阅读代码注释,理解每个排序算法的实现原理。
- 尝试修改代码,例如改变排序方式(升序或降序)、更改排序算法等。
- 比较三种排序算法的效率,并尝试分析其时间复杂度。
通过学习和实践,您可以更深入地理解排序算法的实现和应用。
原文地址: http://www.cveoy.top/t/topic/phKv 著作权归作者所有。请勿转载和采集!