#include <stdio.h>
#include <conio.h>
#define LEN 100 /*数组长度上限*/
#define elemType int /*元素类型*/
/*输入数组*/
void inputArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
scanf ("%d",&arr[i]);
putchar ('\n');
}
/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%d\t",arr[i]);
putchar ('\n');
}
/*升序冒泡排序*/
/*参数说明:*/
/*int arr[]:排序目标数组*/
/*int len:元素个数*/
void sort_qp (elemType arr[], int len) {
elemType temp;
int i, j;
for (i=0; i<len-1; i++)
for (j=0;j<len-1-i; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
int main (void) {
elemType arr[LEN];
int len;
printf ("请输入数组元素个数:");
scanf ("%d",&len);
printf ("请输入包含%d个元素的数组:\n",len);
inputArr (arr, len);
puts ("排序后数组:");
sort_qp (arr, len); /*升序冒泡排序*/
printArr (arr,len);
putchar ('\n');
getch (); /*屏幕暂留*/
free (arr);
return 0;
}
运行结果
追问大神,这是第一问的吗,第二问怎么做啊。。。。。
追答这就是你原题要求的“用起泡法排序”的整个代码
追问哦哦,这是两个结合了吗,我C语言太差了,求大神仔细点说一下吧~
追答原回答写错了。。题目要求的是【从大到小】,即降序排列。。以下改正
#include <stdio.h>
#include <conio.h>
#define LEN 100 /*数组长度上限*/
#define elemType int /*元素类型*/
/*输入数组*/
void inputArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
scanf ("%d",&arr[i]);
putchar ('\n');
}
/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%d\t",arr[i]);
putchar ('\n');
}
/*降序冒泡排序*/
/*参数说明:*/
/*int arr[]:排序目标数组*/
/*int len:元素个数*/
void sort_qp (elemType arr[], int len) {
elemType temp;
int i, j;
for (i=0; i<len-1; i++) /*外循环控制排序趟数,n个数排n-1趟*/
for (j=0; j<len-1-i; j++) { /*内循环每趟比较的次数,第j趟比较n-j次*/
if (arr[j] < arr[j+1]) { /*相邻元素比较,逆序则交换*/
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
int main (void) {
elemType arr[LEN];
int len;
printf ("请输入数组元素个数:");
scanf ("%d",&len);
printf ("请输入包含%d个元素的数组:\n",len);
inputArr (arr, len);
puts ("排序后数组:");
sort_qp (arr, len); /*降序冒泡排序*/
printArr (arr,len);
putchar ('\n');
getch (); /*屏幕暂留*/
free (arr);
return 0;
}
运行结果
啥叫结合了?本身就是一道题啊。
排序有很多种算法,题目要求用冒泡法,那sort_qp函数就是用冒泡法编写的呀