排序问题的优化

61 阅读1分钟

在上一条的代码基础上优化了两点

1.优化循环次数

2.增加了一个跳出循环

#include <stdio.h>
int main(){
    int arr[5];
    for(int i = 0 ; i < 5 ; i++){
        scanf("%d",&arr[i]);
	}
    for(int i = 0 ; i < 4 ; i++ ){
        int isSwitch = 0;
        for(int j = 0;j < 4-i;j++){
        //j < 4-i 让循环次数更明显
            if(arr[j] > arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp; 
                
                isSwitch = 1;
            }
        
        }
    //如果有一次循环,就不用再循环了,直接跳出循环
    if(isSwitch == 0){
        break;
    }
    for(int k = 0;k < 5;k++){
        printf("%d",arr[k]);
    }
    printf("\n");
    }


}