冒泡排序和选择排序

//n个整数,从小到大排序
/*
冒泡排序
两两比较,大的排后面。第一次排序,得到最大的数排最后;
第二次排序,得到第二大的数,排在倒数第二个位置。
一共需要排序长度-1次
前几次排序中确定好位置的元素不参与下一次排序,所以j=数组长度-1-i
*/
/*
#include<stdio.h>//冒泡排序
int main(){
int a[5]; //数组长度
int i, j;
int t;

for(i=0; i<5; i++){ //数组元素赋值
scanf("%d", &a[i]);
}

for(i=0; i<5-1; i++){ ////外层循环,i是排序次数,i=数组长度-1
for(j=0; j<5-1-i; j++){ //内层循环,j是进行比较的数组元素下标,j=数组长度-1-i
if(a[j]>a[j+1]){
t = a[j]; //t是中间变量
a[j] = a[j+1];
a[j+1] = t;
}
}
}

for(i=0; i<5; i++){ //输出数组
printf("%d\t", a[i]);
}

return 0;

}
*/


/*
选择排序
第一个元素依次与后面的元素比较,如果有比第一个元素小的元素,第一个元素和这个元素交换位置;
第二个元素依次与后面的元素比较,如果有比第二个元素小的元素,第二个元素和这个元素交换位置;
...
一共判断长度-1次

*/
#include<stdio.h>//选择排序
int main(){
int a[5]; //数组长度
int i, j;
int t;

for(i=0; i<5; i++){ //数组元素赋值
scanf("%d", &a[i]);
}

for(i=0; i<5-1; i++){ ////外层循环,i是循环次数,i=数组长度-1
for(j=i+1; j<5; j++){ //内层循环,j是每次循环比较时,排在后面的数的元素下表
if(a[i]>a[j]){
t = a[j]; //t是中间变量
a[j] = a[i];
a[i] = t;
}
}
}

for(i=0; i<5; i++){ //输出数组
printf("%d\t", a[i]);
}

return 0;

}

posted @ 2022-03-02 15:33  泰勒斯儿童营养牙膏  阅读(27)  评论(0编辑  收藏  举报