题目:
编写冒泡排序,排序一个整形数组。
题目分析:
使用冒泡排序方式,对于一个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; }
本文出自 “无心的执着” 博客,转载请与作者联系!
原文地址:http://10740590.blog.51cto.com/10730590/1714471