题目:
编写冒泡排序,排序一个整形数组。
题目分析:
使用冒泡排序方式,对于一个n个元素的数组,至少要比较n-1个轮回,每个轮回将较大的数置到后面,最少比较n-2次,一直进行循环操作,最终能够排序一个整形数组。下面是具体的程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
void fun(int arr[])
{
int i = 0;
int j = 0;
int temp = 0;
for(i = 0; i < 9; i++)
{
for(j = 0; j < 9 -i; j++)
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[10] = {0};
int i = 0;
printf("请输入需要排序的数:\n");
for(i = 0; i < 10; i++)
{
scanf("%d",&arr[i]);
}
fun(arr);
system("pause");
return 0;
}
题目:
使用冒泡排序,排序多个字符串。
题目分析:
对于字符串的排序,使用冒泡排序的方式,与上面排序整形数组相类似,只是字符串的比较是利用strcpy函数,比较字符的ASCII码大小。下面是具体的程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define num 5
int main()
{
int i = 0;
int j = 0;
char arr1[num][20] = {0};
char tmp[20] = {0};
printf("请输入需要比较的字符串:\n");
for(i = 0; i < num; i++)
{
scanf("%s",arr1[i]);
}
for(i = 0; i < num; i++)
{
for(j = 0; j < num - i; j++)
{
if(strcmp(arr1[j], arr1[j + 1]) > 0)
{
strcpy(tmp, arr1[j]);
strcpy(arr1[j], arr1[j + 1]);
strcpy(arr1[j + 1], tmp);
}
}
}
printf("输出字符串的比较结果:\n");
for(i = 0; i < num; i++)
{
printf("%s\n", arr1[i]);
}
system("pause");
return 0;
}
本文出自 “无心的执着” 博客,转载请与作者联系!