之前一直不怎么看得懂双重的for循环,以至于写最基础的两个选择方式的时候总不能一笔喝成。今天突有灵感,来写写看。
把大的往左移动一位,移动 j 次,分 i 趟
冒泡排序
for(int i = 0; i < n; i++){
for(int j = 0; j<n-1-i; j++){
if( a[j] > a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
【我在想怎么用scanf()函数手动输入数组内容,
#include<cstdio>
int main()
{
int a[5];
for(int i=0;i<5;i++){
scanf("%d",&a[i]);
}
for(int i = 0; i < 5; i++){
for(int j = 0; j < i; j++){
if( a[j] > a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int j=0;j<5;j++){
printf("%d",a[j]);
}
return 0;
}
这段代码运行不出来。】
选择排序
for(int i=0;i<4;i++){
int k=i;
for(int j=i+1;j<5;j++){
if(a[k]>a[j]){
k=j;
}
int temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}