给你N(N<=100)个数,请你按照从小到大的顺序输出。
输入格式:
输入数据第一行是一个正整数N,第二行有N个整数。
输出格式:
输出一行,从小到大输出这N个数,中间用空格隔开。
输入样例:
5
1 4 3 2 5
输出样例:
1 2 3 4 5
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
思路
冒泡排序,快速排序(C语言库函数),插入排序
冒泡排序代码
#include <stdio.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) { // 如果前一项比后一项大,交换它们的顺序
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int n; // n: 数组中元素个数
scanf("%d", &n); // 输入元素个数
int arr[n]; // arr: 待排序数组
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
bubbleSort(arr, n); // 调用冒泡排序函数对数组进行排序
// 输出排序结果
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if(i<n-1)
printf(" ");
}
return 0;
}
快速排序代码
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) { // 定义快速排序所需的比较函数
return *(int*)a - *(int*)b;
}
int main() {
int n; // n: 数组中元素个数
scanf("%d", &n); // 输入元素个数
int arr[n]; // arr: 待排序数组
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
qsort(arr, n, sizeof(int), cmp); // 调用快速排序函数对数组进行排序
// 输出排序结果
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if(i<n-1)
printf(" ");
}
return 0;
}
插入排序代码
#include <stdio.h>
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i]; // 当前需要插入有序列表的元素
int j = i - 1; // 搜索已排序区间的位置并进行比较
while (j >= 0 && arr[j] > key) { // 如果序列已经有序或找到合适的位置,则退出循环
arr[j + 1] = arr[j]; // 如果当前位置的元素大于要插入的元素,则后移当前位置的元素
j--;
}
arr[j + 1] = key; // 将待排序的新元素插入到有序区间中第一个大于它的元素之前
}
}
int main() {
int n; // n: 数组中元素个数
scanf("%d", &n); // 输入元素个数
int arr[n]; // arr: 待排序数组
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
insertionSort(arr, n); // 调用插入排序函数对数组进行排序
// 输出排序结果
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if(i<n-1)
printf(" ");
}
return 0;
}