#include<stdio.h>
int main()
{
/*
对这数组排序的基本思路已经出来了:
一趟冒泡排序可以确定一个数来到最终的位置,数组中有n个数的话,就要进行n-1趟冒泡排序,一趟冒泡排序内部是相邻元素的比较。
*/
// 根据数组中的元素个数,判断趟数
int arr[10] = { 1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr) / sizeof(arr[1]);
//趟数为sz-1,实现趟数,使用循环
int i = 0;
for (i = 0;i < sz - 1;i++)
{
// 进入循环一次,就是一趟,一趟内部是相邻元素的比较。
// 使用下标来定位元素
//arr[j] arr[j+1]
// 一趟冒泡排序内部要进行多少对的比较,随着趟数的增加,需要排序的元素变少,需要比较的对数也就变少。
// 第一趟要进行9对,第二趟要进行8对,第三趟要进行7对。
// 为了实现这些重复的比较,使用循环,重复比较的对数减少,循环的次数减少。
int j = 0;
for (j = 0;j < sz - 1 - i;j++)
{
//对相邻的元素进行判断
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = tmp;
}
}
}
// 在控制台输出升序后的数组
// 重复打印10次,要使用循环实现
int e = 0;
while (e < 10)
{
printf("%d ", arr[e]);
e++;
}
return 0;
}
2022.6.18日
对于这次的学习,我认为写下一个代码,应该先有一个大概的思路,在根据这个思路逐渐向下延申。
这个通过使用冒泡排序算法,实现一个整型数组的升序。
大概思路是:一趟冒泡排序,可以安排好一个元素,n个元素,则需要n-1趟,而一趟冒泡排序的内部,则是相邻两个元素的相互交换。