一、教师例题|ू・ω・` ):交换两个元素的值
代码如下( • ̀ω•́ )✧:
#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;
}
运行结果如下 ̄ω ̄=:
巧记换位:撇撇捺
二、教师讲解 ̄▽ ̄:比较并交换
代码如下:
#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]);
}
}
运行结果如下:
三、例题:从小到大排序
代码如下:
#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]);
}
}
运行结果如下:
代码优化: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");
}
}
运行结果如下:
对比如下: