课程
/后端开发
/C
/C语言入门
解释下这句为什么从8到0
2015-10-01
源自:C语言入门 6-5
正在回答
for(i=8;i>=0;i--) //控制每趟比较的最大下标
首先执行i=8,再执行for(j=0, j<=i, j++)的循环条件是 j<=i 也就是 j<=8,
当内嵌循环执行到 j=8;比较完 arr[8]和arr[8+1]之后,数组中最大那个数就放进最后一个arr[[9]中了,那么这个数在下一轮循环中就不用再比较。
然后再外执行 i--,也就是 i=7,内循环条件 j<=7,比较的最大下标就是7 即 arr[7] 和arr[7+1]比较,就不用再去和最大的arr[9]比较了
//这是冒泡排序的基本特征,先找出数组中最大的数放在最后面,不用再执行比较
假如有5个数要比较,你只要比好了4个数,那剩下的一个就不用再排了
i等于8,当i大于等于0时为真(执行循环语句),然后i自减
举报
C语言入门视频教程,带你进入编程世界的必修课-C语言
4 回答 for(i=8; i>=0; i--) { for(j=0;j<=i;j++)
1 回答14行for(i=8; i>=0; i--)
5 回答for(i=9; i>=0; i--)
2 回答#include <stdio.h> int main() { int a[10] = {0}; for (int i = 0; i < 10 , i++) { a[i] = arc4random()%50; printf ("%d",a[i]); } for (int i = 0; i < 10-1 ;i++ ) { for(int j = 0;j< 10-1-i ;j++) {
4 回答#include <stdio.h> #define N 10; int sum(int score[]) { int i,n; for(i=0;i<10;i++) n+=score[i]; printf("%d",n); } int max(int score[]) { int i,ma=0; for(i=0;i<10;i++) { if(score[i]>ma) ma=score[i]; } printf(