黑马程序员技术交流社区
标题: 数组之选择排序 [打印本页]
作者: 熊德玺 时间: 2015-11-8 19:59
标题: 数组之选择排序
/*
选择排序
思路: 对于一个数组,先定义一个数组的元素为最大值,取这个最大值的角标, 然后取第二个元素与之对比, 判断大小,如果第二个元素比第一个大,那么就将第二个元素的角标赋值给第一个元素, 依次循环到这个数组结束,把两个元素交换位置
此为第一轮
然后再依次判断剩下的数,实现交换即可
*/
- #include <stdio.h>
- int main(){
- int ss[6]={0,2,4,6,5,8};
-
- int jiaobiao=0;
- for (int i=0; i<6;i++) {
- int jiaobiao=i;
- for (int j=i+1; j<6; j++)
- {
- if (ss[jiaobiao]<ss[j]) //如果下一个元素的值大于之前我们定义的最值,
- {
- jiaobiao=j; //就将这个值的角标给之前的最值,
- }
- }
- printf("第%d轮的排序的最大值角标为%d\n",i,jiaobiao); //并打印输出这个最值得角标
复制代码
作者: 熊德玺 时间: 2015-11-8 20:01
#include <stdio.h>
int main(){
int ss[6]={0,2,4,6,5,8};
int jiaobiao=0;
for (int i=0; i<6;i++) {
int jiaobiao=i;
for (int j=i+1; j<6; j++)
{
if (ss[jiaobiao]<ss[j]) //如果下一个元素的值大于之前我们定义的最值,
{
jiaobiao=j; //就将这个值的角标给之前的最值,
}
}
printf("第%d轮的排序的最大值角标为%d\n",i,jiaobiao); //并打印输出这个最值得角标
int linShi=ss[i];
ss[i]=ss[jiaobiao]; // 这里三行是实现对应角标的值的互换,
ss[jiaobiao]=linShi;
for (int h=0; h<6; h++)
{
printf("%d\t",ss[h]); // 这里的for是执行每一轮排序之后就打印输出一次当前排序,
}
printf("\n");
}
for (int k=0; k<6; k++)
{
printf("%d\t",ss[k]); //最终打印排序
}
printf("\n");
return 0;
}
作者: zyios 时间: 2015-11-8 21:05
写的很详细,关键是有代码
作者: 熊德玺 时间: 2015-11-9 00:47
现在是依葫芦画瓢来着
作者: 许本亮 时间: 2015-11-9 09:28
受教了,顶一下
作者: 李坤小太阳 时间: 2015-11-9 15:07
写的很详细,关键是有代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |