C语言数组排序与插入数据 - 冒泡排序实现
#include <stdio.h> #define N 10
void bubbleSort(int a[], int n); // 冒泡排序函数 void insert(int a[], int *n, int num); // 插入新数据函数
int main() { int a[N]; int n, i, num; char choice;
// 输入数据个数
printf('请输入数据个数n(n不得超过%d):', N);
scanf('%d', &n);
// 输入n个整数
for (i = 0; i < n; i++) {
printf('第%d个数:', i+1);
scanf('%d', &a[i]);
}
// 排序并输出
bubbleSort(a, n);
printf('排好序的数据为:');
for (i = 0; i < n; i++) {
printf('%d ', a[i]);
}
printf('\n');
// 插入新数据并输出
do {
printf('请输入一个新的数据:');
scanf('%d', &num);
insert(a, &n, num);
printf('新的数据列表为:');
for (i = 0; i < n; i++) {
printf('%d ', a[i]);
}
printf('\n');
// 判断是否继续插入数据
printf('是否继续插入数据?(Y/N)');
getchar(); // 消耗掉之前输入的换行符
scanf('%c', &choice);
} while (choice == 'Y' || choice == 'y');
return 0;
}
void bubbleSort(int a[], int n) { int i, j, temp; for (i = 0; i < n-1; i++) { for (j = 0; j < n-i-1; j++) { if (a[j] < a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } }
void insert(int a[], int *n, int num) { int i; if (*n == N) { // 判断是否已满 printf('数据已满,无法插入!\n'); return; } for (i = *n-1; i >= 0 && a[i] < num; i--) { // 将比num大的数往后移 a[i+1] = a[i]; } a[i+1] = num; // 将num插入到正确的位置 (*n)++; // 数据个数加1 }
原文地址: https://www.cveoy.top/t/topic/l4AP 著作权归作者所有。请勿转载和采集!