这是冒泡排序的变种吗? 冒泡排序和选择排序
2011-09-30 19:18
357 查看
学习排序算法,自己写了一个,结果写完发现跟经典的冒泡算法不一样。
经典的冒泡算法是先把最大的找出来,放到最后,bubble
我的是先把最小的找出来,放到最前面,这应该都是一个变种吧。bubble
结果
还有选择排序,这个是看的经典的啦
思路就是先把最小的下表找出来,然后交换,这样效率就高了
结果
来个主函数
ok,两天的学习结果。
还有知道int,char等的占得字节数用sizeof(int)。
经典的冒泡算法是先把最大的找出来,放到最后,bubble
我的是先把最小的找出来,放到最前面,这应该都是一个变种吧。bubble
voidbubble1(int*number,intcount)//大的往下
{
inti,j,k=0;//循环次数控制
intm;//打印数组控制
inttemp;//临时变量
boolischanged;
for(i=count;i>0;i--)
{
ischanged=false;
printf("bubble1第%d遍结果:",count-i);
for(j=0;j<i-1;j++)
if(number[j]>number[j+1])
{
temp=number[j];
number[j]=number[j+1];
number[j+1]=temp;
ischanged=true;
}
if(!ischanged)
{
break;
}
for(m=0;m<count;m++)
printf("%d,",number[m]);
printf("\n");
}
printf("bubble排序后");
printf("[");
for(inti=0;i<count;i++)
{
printf("%d,",number[i]);
}
printf("]");
}
voidbubble(int*number,intcount)//小的往上
{
inti,j,k=0;//循环次数控制
intm;//打印数组控制
inttemp;//临时变量
boolischanged;
for(i=0;i<count;i++)
{
ischanged=false;
printf("bubble第%d遍结果:",i);
for(j=i+1;j<count;j++)
if(number[i]>number[j])
{
temp=number[i];
number[i]=number[j];
number[j]=temp;
ischanged=true;
}
if(!ischanged)
{
break;
}
for(m=0;m<count;m++)
printf("%d,",number[m]);
printf("\n");
}
printf("bubble排序后");
printf("[");
for(inti=0;i<count;i++)
{
printf("%d,",number[i]);
}
printf("]");
}
结果
还有选择排序,这个是看的经典的啦
思路就是先把最小的下表找出来,然后交换,这样效率就高了
voidselect(int*number,intcount)
{
inti,j,k=0;//循环次数控制
intm;//打印数组控制
inttemp;//临时变量
for(i=0;i<count;i++)
{
k=i;
printf("select第%d遍结果:",i);
for(j=i+1;j<count;j++)
if(number[k]>number[j])
k=j;
if(k!=i)
{
temp=number[i];
number[i]=number[k];
number[k]=temp;
}
for(m=0;m<count;m++)
printf("%d,",number[m]);
printf("\n");
}
printf("select排序后");
printf("[");
for(inti=0;i<count;i++)
{
printf("%d,",number[i]);
}
printf("]");
}
结果
来个主函数
#include<iostream>
#include<string>
#include<stdio.h>
usingnamespacestd;
voidsize();
voidavg(int*number,intcount);
voidselect(int*number,intcount);
voidbubble(int*number,intcount);
voidbubble1(int*number,intcount);
voidmain()
{
intnumber[]={11,10,9,8,7,1,5,4,3,2,6};
//intnumber[]={11,2,3,4,5,6,7,8,9,10,1};
intcount=sizeof(number)/sizeof(int);
printf("count=%d\n",count);
//stringb=NULL;
avg(number,count);
//printf("avg=%.3f\n",b);
printf("select排序前\n");
printf("[");
for(inti=0;i<count;i++)
{
printf("%d,",number[i]);
}
printf("]");
printf("\n");
select(number,count);
printf("\n");
//int number1[]={11,10,9,8,7,6,5,4,3,2,1};
intnumber1[]={11,2,8,4,33,55,7,3,9,10,1};
//intnumber1[]={11,10,9,8,7,1,5,4,3,2,6};
printf("bubble排序前\n");
printf("[");
for(inti=0;i<count;i++)
{
printf("%d,",number1[i]);
}
printf("]");
printf("\n");
bubble(number1,count);
printf("\n");
//size();
intnumber2[]={11,2,8,4,33,55,7,3,9,10,1};
//intnumber1[]={11,10,9,8,7,1,5,4,3,2,6};
printf("bubble1排序前\n");
printf("[");
for(inti=0;i<count;i++)
{
printf("%d,",number2[i]);
}
printf("]");
printf("\n");
bubble1(number2,count);
printf("\n");
}
ok,两天的学习结果。
还有知道int,char等的占得字节数用sizeof(int)。
相关文章推荐
- 数组选择排序和冒泡排序
- java插入排序,冒泡排序,选择排序的思路及实现
- 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结
- 第十四周 选择排序 冒泡排序打混编
- 选择排序和冒泡排序(JAVA)
- 冒泡排序和选择排序
- 冒泡排序 选择排序 快速排序
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 冒泡排序和选择排序
- java 几种简单的排序(插入排序,冒泡排序,选择排序)
- 冒泡排序,插入排序,选择排序
- 简单排序:冒泡排序、选择排序和插入排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 基本排序算法(冒泡排序,选择排序,插入排序)后续[时间测试]
- 几种简单的排序:选择排序,插入排序,快速排序,冒泡排序
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- c语言中的几种排序算法——冒泡排序、快速排序、插入排序、选择排序
- 笔试经常遇到的选择排序、冒泡排序和二分法查找
- C#实现所有经典排序算法(选择排序 冒泡排序 快速排序)
- 对数字进行直接选择排序、冒泡排序