为什么必须把begin赋给a才行,begin赋给a不也是给的0值吗,但写0就报错了,为什么啊
4条回答 默认 最新
- a5156520 2024-03-04 19:02关注
上面的代码,主要思路应该是通过逐个将数组每个元素的值与其后面的元素比较,逐次将当前最小的值与前面的元素进行交换,来达到排序的目的的。
测试如下:package com.company; public class lx8 { public static void main(String[] args) { int a[] = {2,9,5,0,1,3,6,8}; int begin=0; // 循环遍历begin初始赋值为0 int end = a.length-1; // 循环最大到下标a.length-1 while(begin<end) { // 当循环变量begin小于数组最大下标(a.length-1)时,不断比较和排序数组,当大于等于数组最大下标(a.length-1)时停止循环 int min=a[begin]; // 默认数组当前最小值的值为循环变量begin对应下标的数组元素的值 int t=begin; // 默认数组当前最小值下标为循环变量begin的值 // 这里从循环变量begin开始的下标,直到数组最后一个下标结束 // 如果这里i改为0,会将前面比较过的数组元素再比较一次,从而导致出错 // 所以,这里需要将i改为从当前循环变量begin开始的下标开始,前面比较过的元素就不再继续参与比较 for(int i=begin;i<a.length;i++) { if(min>a[i]) { // 如果当前元素的值比最小值小,则将最小值min赋值为当前元素的值,最小值下标赋值给t min=a[i]; t=i; } } // 将下标t的元素值赋值为当前比较的下标begin的元素(前面的元素),如果t的值改变了,则下标t中的元素是从下标begin开始到后面结束的元素中的最小值(t为后面的元素) a[t]=a[begin]; // 这里将前面比较的元素(begin下标中的元素)值赋值为数组当前最小值min // 这里执行的两步交换,起到排序的作用 a[begin]=min; // 循环变量begin指向下个下标 begin++; } // 打印排序后数组元素值 for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 提问STK的问题,哪位航天领域的同学会啊
- ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
- ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
- ¥15 关于#java#的问题,请各位专家解答!
- ¥15 如何卸载arcgis 10.1 data reviewer for desktop
- ¥15 共享文件夹会话中为什么会有WORKGROUP
- ¥15 关于#python#的问题:使用ATL02数据解算光子脚点的坐标(操作系统-windows)
- ¥115 关于#python#的问题:未加密前两个软件都可以打开,加密后只有A软件可打开,B软件可以打开但读取不了数据
- ¥15 在matlab中Application Compiler后的软件无法打开
- ¥15 想问一下STM32创建工程模板时遇到得问题