─=≡Σ(((つ•̀ω•́)つC语言笔记

44 阅读1分钟

一、教师例题|ू・ω・` ):交换两个元素的值

image.png

代码如下( • ̀ω•́ )✧:

#include <stdio.h>

int main(){
	int arr[5] = {5,3,2,6,4};
	
	
	int temp = arr[2]; 
	arr[2] = arr[3];
	arr[3] = temp;
	
	printf("%d",arr[0]);
	printf("%d",arr[1]);
	
	return 0;

}

运行结果如下 ̄ω ̄=:

image.png

巧记换位:撇撇捺

image.png

二、教师讲解 ̄▽ ̄:比较并交换

image.png

代码如下:

#include <stdio.h>

int main(){
	int arr[5] = {5,3,2,6,4};
	
	for(int j = 0;j<4;j++){
		if(arr[j]>arr[j+1]){
			int temp = arr[j];
			arr[j] = arr[j+1];
			arr[j+1] = temp;
		}
	}
	for(int i=0;i<5;i++){
		printf("%d\n",arr[i]);
	}
	

}

运行结果如下:

image.png

三、例题:从小到大排序

代码如下:

#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++){
		for(int j=0;j<4;j++){
			if(arr[j]>arr[j+1]){
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	printf("---------------------------\n");
	for(int i=0;i<5;i++){
		printf("%d\n",arr[i]);
		

}
}

运行结果如下:

image.png

代码优化:isSwitch + break的应用

优化后的代码如下:

1.交换次数上的优化(次数减少)

2.跳出循环(break跳出循环效率更快)

#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++){
			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

对比如下:

image.png