数组排序交换 改编版

32 阅读1分钟

比上次的代码更加完善

通过一个for循环,比较相邻两个元素,做交换 把最大的元素换到数组的最后一个位置

#include  <stdio.h>

int main(){
	//从键盘输入5个数,从小到大排序,输出
	int arr[5];
	for(int i = 0;i<5;i++){
		scanf("%d",&arr[i]);
	}
	//通过一个for循环,比较相邻两个元素,做交换 
	//把最大的元素换到数组的最后一个位置
	for(int i = 0;i<4;i++){
          //假设没有交换
		int isSwitch = 0;
		
	    for(int j =0;j<4-i;j++){
		    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");
}
}

image.png