当前位置: 首页 > news >正文

C题目11:数组a[m]排序

每日小语

双手,且放下一切劳作,前额,也忘掉忧思,此时此刻我所有的感觉就想沉入安睡。

 自己敲写

这个问题老师上课讲了一种方法,叫做冒泡排序。基本思想是

1.找最小值,放到a[0]

2.从a[1]~a[3]找最小值,放到a[1]

自己敲写的时候,问题首先出在了如何设置一个初始变量上

int arr[5] = {10, 20, 30, 40, 50};
#include <stdio.h>int main() 
{int a[5]={1,4,3,5,2};for(int i=0;i>0;i++){for(int j=1;j>0;j++){if (a[i]>a[j]){a[i]=a[j];a[j]=a[i];}}}printf(a);return 0;
}

目前代码。问题很多。

#include <stdio.h>int 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[j+1]){int temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}printf("Sorted Array: %d %d %d %d %d\n", a[0], a[1], a[2], a[3], a[4]);return 0;
}
  1. 在外层循环中,i 应该从0开始递增,而不是 i>0。循环条件应为 i<4,因为数组长度为5,下标从0到4。

  2. 在内层循环中,j 应该从0开始递增,而不是 j>0。循环条件应为 j<4

  3. 在交换数组元素的部分,应该是先将较大的元素赋值给临时变量,然后再将较小的元素赋值给较大的元素,最后再将临时变量赋值给较小的元素。

  4. 在使用 printf 输出数组时,需要提供一个格式字符串,例如 "Array: %d %d %d %d %d\n",并提供要输出的数组元素。

  5. 问题还是出在循环,两层循环理解不当。

    当使用冒泡排序算法时,两层嵌套循环的作用是进行比较和交换操作,以便将较大的元素逐步移动到数组的末尾。以下是两层循环的具体作用:

    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` 是因为在每一轮外层循环之后,数组的末尾已经是当前轮次中最大的元素,不再需要比较和交换。因此,内层循环的范围在逐渐减小。

       - 比较相邻元素,如果前一个元素大于后一个元素,则交换它们的位置,以确保较大的元素向数组的末尾移动。

    整体来说,两层循环共同工作,通过多次比较和交换,将数组中较大的元素逐步移动到末尾,实现排序的目的。这就是冒泡排序算法的基本思想。

http://www.lryc.cn/news/238731.html

相关文章:

  • 编译器安全
  • docker部署gitlab 12.10.6过程
  • 单例设计模式是什么?什么是 Singleton 单例设计模式?Python 单例(单件)设计模式示例代码
  • Redis跳跃表
  • C++基础从0到1入门编程(二)
  • Uniapp扫码预览连接地址与手机不在同一网段
  • 万界星空科技SMT行业生产管理MES系统解决方案
  • vue3 uniapp h5 安卓和iOS开发适配踩坑记录
  • inf和nan
  • 十. Linux关机重启命令与Vim编辑的使用
  • Spring-IOC-@Value和@PropertySource用法
  • 如何理解Python中一切皆对象?
  • 【如何学习Python自动化测试】—— 鼠标键盘操作
  • 随笔-事儿就这么个事儿
  • django理解03 数据库引入
  • Jtti:windows中apache怎么实现负载均衡
  • 2311rust,到43版本更新
  • 前端埋点上报的几种方式
  • 外部 prometheus监控k8s集群资源
  • centos安装神通数据库
  • 汇编-PUSHFD和POPFD标志寄存器值压栈和出栈
  • 基于SSM的进销存管理系统设计与实现
  • Django DRF限流组件
  • UEC++ day7
  • win11,安装python,pip,和opencv
  • kafka入门(一):kafka消息发送与消费
  • CMap数据库筛选化学药物
  • mysql命令行(mysql-client)连接数据库
  • sklearn中的TfidfTransformer和gensim中的TfidfModel的区别
  • spring注解