编写冒泡排序,排序一个×××数组
冒泡法:对于n个数进行从小到大冒泡排序,一共需要冒泡n-1次。两两进行比较,每冒泡排序一次,最大值在最下边(最后一个位置)。
比如:
87 12 56 45 78
87和12交换:12 87 56 45 78
87和56交换:12 56 87 45 78
87和45交换:12 56 45 87 78
87和78交换:12 56 45 78 87
到此第一趟排序结束,接下来的每一趟排序都是这样。
代码如下:
#include<stdio.h> #include<stdlib.h> void bubble(int str[],int len) { int i,j,temp; for(i=0;i<len-1;i++)//进行len-1趟比较 { for(j=0;j<len-1-i;j++)//进行len-1-i次两两比较 { if(str[j]>str[j+1]) { temp=str[j];//交换两个数 str[j]=str[j+1]; str[j+1]=temp; } } } } int main() { int arr[10],len,i; for(i=0;i<10;i++)//输入整型数组 { scanf("%d",&arr[i]); } len=sizeof(arr)/sizeof(arr[0]); bubble(arr,len); for(i=0;i<len;i++)//输出整型数组 { printf("%d ",arr[i]); } system("pause"); return 0; }
使用冒泡排序,排序多个字符串。
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char *str[] = { "bdea","bade","decd","asdf" };//此处应定义为指针数组 int len = sizeof(str) / sizeof(str[0]); int i, j; for (i = 0; i < len - 1; i++) { for (j = 0; j < len - i - 1; j++) { if (strcmp(str[j], str[j + 1])>0) {//字符串进行比较,并交换大小,从小到大排序 char*temp = str[j]; str[j] = str[j + 1]; str[j + 1] = temp; } } } for (i = 0; i < len; i++) { printf("%s ", str[i]); } system("pause"); return 0; }