C语言——有序数组

83 阅读1分钟

输入5个数,从小到大排序,输出

  1. 通过一个for循环,比较相邻的两个元素
  2. 把最大的元素换到数组的最后一个位置
#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;i++){
		
		// 假设没有交换 
		int isSwitch = 0;
		 
	    for(int j=0;j<4;j++){
		// j,j+1
		    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 如果一次交换都没有发生,说明已经有序,就不用再循环了

例:12345二维数组

image.png

二维数组

#include <stdio.h>
int main(){
	
	
	// 二维数组:                     方阵,有行有列
	//            一种特殊的一维数组:每个元素都是一个一维数组 
	
	 //int arr[2][3]= {
	//                      {1,2,3},
	//                      {4,5,6}
	
	              // };
	
	//  访问元素4             
    //printf("%d", arr[1][0]);
    
    // 访问元素3 
    //printf("%d", arr[0][2]);
    
    
   // int i = 0;
    //printf("%d",arr[i][i] +arr[i+1][i+1]);
    
    // 打印输出二维数组
	
	//for(int j=0;j<3;j++){
	//	printf("%d",arr[0][j]);
	//}
//	printf("\n");
	//printf("%d",arr[1][j]);
	
	
	int arr[2][3]= {
	                     {1,2,3},
						 {4,5,6}
	
	               };
	for(int i=0;i<2;i++){
		for(int j=0;j<3;j++){
			printf("%-5d",arr[i][j]);
		}
		printf("\n");
	}
	
        
}

运行结果如下:

image.png