做网站贵吗,重庆企业网站建设公司,怎么找需要推广的商家,养生网站源码每日小语
双手#xff0c;且放下一切劳作#xff0c;前额#xff0c;也忘掉忧思#xff0c;此时此刻我所有的感觉就想沉入安睡。 自己敲写
这个问题老师上课讲了一种方法#xff0c;叫做冒泡排序。基本思想是
1.找最小值#xff0c;放到a[0]
2.从a[1]~a[3]找最小值且放下一切劳作前额也忘掉忧思此时此刻我所有的感觉就想沉入安睡。 自己敲写
这个问题老师上课讲了一种方法叫做冒泡排序。基本思想是
1.找最小值放到a[0]
2.从a[1]~a[3]找最小值放到a[1]
自己敲写的时候问题首先出在了如何设置一个初始变量上
int arr[5] {10, 20, 30, 40, 50};#include stdio.hint main()
{int a[5]{1,4,3,5,2};for(int i0;i0;i){for(int j1;j0;j){if (a[i]a[j]){a[i]a[j];a[j]a[i];}}}printf(a);return 0;
}
目前代码。问题很多。
#include stdio.hint main()
{int a[5] {1, 4, 3, 5, 2};for (int i 0; i 4; i){for (int j 0; j 4; j){if (a[j] a[j1]){int temp a[j];a[j] a[j1];a[j1] temp;}}}printf(Sorted Array: %d %d %d %d %d\n, a[0], a[1], a[2], a[3], a[4]);return 0;
}在外层循环中i 应该从0开始递增而不是 i0。循环条件应为 i4因为数组长度为5下标从0到4。 在内层循环中j 应该从0开始递增而不是 j0。循环条件应为 j4。 在交换数组元素的部分应该是先将较大的元素赋值给临时变量然后再将较小的元素赋值给较大的元素最后再将临时变量赋值给较小的元素。 在使用 printf 输出数组时需要提供一个格式字符串例如 Array: %d %d %d %d %d\n并提供要输出的数组元素。 问题还是出在循环两层循环理解不当。 当使用冒泡排序算法时两层嵌套循环的作用是进行比较和交换操作以便将较大的元素逐步移动到数组的末尾。以下是两层循环的具体作用 1. **外层循环i循环** 外层循环负责控制每一轮的比较和交换操作。对于长度为 n 的数组需要进行 n-1 轮比较确保数组中的所有元素都被正确地排序。外层循环的索引变量通常用 i 表示。 c for (int i 0; i 4; i) { // 内层循环将执行比较和交换操作 } 2. **内层循环j循环** 内层循环负责实际的比较和交换操作。在每一轮外层循环中内层循环从数组的起始位置开始依次比较相邻的两个元素并根据需要进行交换。内层循环的索引变量通常用 j 表示。 c for (int j 0; j 4 - i; j) { // 比较和交换操作 } - 4 - i 是因为在每一轮外层循环之后数组的末尾已经是当前轮次中最大的元素不再需要比较和交换。因此内层循环的范围在逐渐减小。 - 比较相邻元素如果前一个元素大于后一个元素则交换它们的位置以确保较大的元素向数组的末尾移动。 整体来说两层循环共同工作通过多次比较和交换将数组中较大的元素逐步移动到末尾实现排序的目的。这就是冒泡排序算法的基本思想。