题目链接:7-27 冒泡法排序
一. 题目
1. 题目
2. 输入输出格式
3. 输入输出样例
4. 限制
二、代码
1. 代码实现
c
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 数字初始化函数
int *arrayGet(int len) {
int *array;
array = malloc(len * sizeof(int));
for (int i = 0; i < len; i++) {
if (!scanf("%d", &array[i])) {
return 0;
}
}
return array;
}
// 冒泡排序
int *arraySort(int *array, int len, int time) {
int tempNum;
for (int tempTime = 0; tempTime < time; tempTime++) {
for (int i = 0; i < len - 1; i++) {
if (array[i] > array[i+1]) {
tempNum = array[i];
array[i] = array[i+1];
array[i+1] = tempNum;
}
}
len --; // 下次排序的比较次数减1
}
return array;
}
// 打印函数
void arrayPrint(int *array, int len) {
bool printOnce = false;
while (len) {
if (printOnce) {
printf (" %d", *array);
} else {
printf ("%d", *array);
printOnce = true;
}
array++;
len--;
}
}
int main(void) {
int len, time;
int *array;
if (scanf("%d %d", &len, &time) != 2) {
return -1;
}
array = arrayGet(len);
if (!array) {
return -1;
}
array = arraySort(array, len, time);
arrayPrint(array, len);
free(array);
return 0;
}