C程序设计 (第四版) 谭浩强 习题7.11
习题 7.11 写一个函数,用“起泡法”对输入的10个字符按由小到大顺序排列。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法1:使用数组
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
void ascendingBubbleSort(int num[], int n){
int temp;
for(int i = 0; i < n - 1; i++){
for(int j = 0; j < n - 1 - i; j++){
if(num[j] > num[j+1]){
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
}
int main(){
int num[N];
printf("Enter %d number: ", N);
for(int i = 0; i < N; i++){
scanf("%d", &num[i]);
}
ascendingBubbleSort(num, N);
printf("New Sort: ");
for(int i = 0; i < N; i++){
printf("%d ", num[i]);
}
printf("\n");
system("pause");
return 0;
}
方法2:使用指针、动态分配内存
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
void initialNum(int **num, int n){
*num = (int*)malloc(n * sizeof(int));
}
void inputNum(int *num, int n){
printf("Enter %d number: ", n);
for(int i = 0; i < n; i++){
scanf("%d", &num[i]);
}
}
void ascendingBubbleSort(int *num, int n){
int temp;
for(int i = 0; i < n - 1; i++){
for(int j = 0; j < n - 1 - i; j++){
if(num[j] > num[j+1]){
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
}
void outputNum(int *num, int n){
printf("New Sort: ");
for(int i = 0; i < N; i++){
printf("%d ", num[i]);
}
printf("\n");
}
int main(){
int *num = NULL;
initialNum(&num, N);
inputNum(num, N);
ascendingBubbleSort(num, N);
outputNum(num, N);
free(num);
system("pause");
return 0;
}