冒泡排序法(从小到大)。输入10个整数,用冒泡排序法将它们从小到大排序后输出。
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[10];
cout << "Enter 10 integers:" << endl;
for (int i = 0; i < 10; i++) {
cin >> arr[i];
}
bubbleSort(arr, 10);
cout << "Sorted array:" << endl;
for (int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
奇数在前,偶数在后;
奇数按从大到小排序;
偶数按从小到大排序。
输入格式
输入一行,包含 10个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 100。
输出格式
按照要求排序后输出一行,包含排序后的 10 个整数,数与数之间以一个空格分开。
参考答案:
使用冒泡排序法从小到大排序:
#include <stdio.h>
int main() {
int nums[10];
// 从键盘输入10个整数
printf("请输入10个整数:");
for (int i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
// 冒泡排序
int temp;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9 - i; j++) {
if (nums[j] > nums[j+1]) {
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
// 输出排序后的结果
printf("排序后的结果为:");
for (int i = 0; i < 10; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
使用折半法查找数字,如果不存在则输出“无此数”:
#include <stdio.h>
int main() {
int nums[15];
// 从键盘输入15个整数
printf("请输入15个整数:");
for (int i = 0; i < 15; i++) {
scanf("%d", &nums[i]);
}
// 排序
int temp;
for (int i = 0; i < 14; i++) {
for (int j = 0; j < 14 - i; j++) {
if (nums[j] > nums[j+1]) {
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
// 输出排序后的结果
printf("排序后的结果为:");
for (int i = 0; i < 15; i++) {
printf("%d ", nums[i]);
}
printf("\n");
char flag = 'y';
while (flag == 'y' || flag == 'Y') {
// 输入要查找的数字
int target;
printf("请输入要查找的数字:");
scanf("%d", &target);
// 使用折半法查找
int left = 0, right = 14;
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (nums[mid] == target) {
printf("数字 %d 在数组中的位置为 %d\n", target, mid+1);
break;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
if (left > right) {
printf("无此数\n");
}
// 是否继续查询
printf("是否继续查询?(y/n)");
getchar(); // 吃掉换行符
scanf("%c", &flag);
}
return 0;
}