为什么使用冒泡排序?
代码简单,容易理解
原理:始终是相邻的两个元素进行比较,如果需要交换就进行交换,然后继续用相邻的两个元素进行比较直到,比较完最后一个元素 即比较完i-2和i-1
代码:
void bubbleSort(int *data,int length)
{
int temp;
for (int i = 0; i < length-1; i ++) {
for (int j = 0; j < length - i -1; j ++) {
if (data[j] > data[j + 1]) {
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
}
计算过程:
输入
34,56,2,45,4,789,43,222,3,567
数列
打印结果为
第1趟: 34 2 45 4 56 43 222 3 567 789
第2趟: 2 34 4 45 43 56 3 222 567 789
第3趟: 2 4 34 43 45 3 56 222 567 789
第4趟: 2 4 34 43 3 45 56 222 567 789
第5趟: 2 4 34 3 43 45 56 222 567 789
第6趟: 2 4 3 34 43 45 56 222 567 789
第7趟: 2 3 4 34 43 45 56 222 567 789
第8趟: 2 3 4 34 43 45 56 222 567 789
第9趟: 2 3 4 34 43 45 56 222 567 789
冒泡排序法对字符串进行排序:
void sortContact()
{
char name[3][50] = {0};
char temp[50] = {0};
for (int i = 0; i < 3; i ++) {
fgets(name[i], 50, stdin);
}
for (int i = 0; i < 3; i ++) {
fputs(name[i], stdout);
}
for (int i = 0; i < 3-1; i ++) {
for (int j = 0; j < 3 - i -1; j ++) {
if (strcmp(name[j], name[j + 1]) > 0) {
strcpy(temp, name[j]);
strcpy(name[j], name[j + 1]);
strcpy(name[j + 1], temp);
}
}
}
printf("\n");
for (int i = 0; i < 3; i ++) {
fputs(name[i], stdout);
}
}