代码优化

31 阅读1分钟

在上篇文章排序中,代码仍然可以进一步优化

首先:将循环的次数优化,如果顺序是有序的,就不用再进行排序

其次:已经排序过的数就不再进行重复比较排序

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

具体更新在:

8-9和21-22行,定义了一个isSwitch,这个是用来判断原本输入的数是否有序,若有序则不进行排序。

11行,将j < 4改成了j < 4 - i。这样可以避免已经排序好的数值再次进行排序的判断。