A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

冒泡排序是将相邻的两个数进行比较,将大数调换到后面,调换完成之后再一次与后边相邻的数进行比较再调换,最后把最大的数调换到最后的位置。在进行第二轮比较,比较前n-1个数,再把最大的数调换到最后,一次类推,直到循环到第一个数。比较完成之后从小到大排序。

选择排序是设定一个变量k存放最大值的下标,假设第一个数是最大值,与后边相邻的数一次进行比较,假如后边的数大于前边的数,则把大数的下标值赋值给k,当一轮比较完成之后,最大数是带k下标的数组元素,看最大值是否是第一个数,如果不是,把第一个数与最大数进行交换,第一个数变为最大数,紧接着进行第二轮比较,比较余下的数,以此类推比较完成之后,数值从大到小排列。

两者不同之处在于冒泡排序两两比较如果前边大于后边则马上调换,是一个大数往后调换的过程,选择排序只是记录最大值的下标,一轮比较完之后,如果最大值不是第一个值才进行调换位置,是一个大数往前调换的过程。

11 个回复

倒序浏览
没有代码啊                     
回复 使用道具 举报
学到了                                 
回复 使用道具 举报
没代码结合难理解
回复 使用道具 举报
加油加油加油
回复 使用道具 举报
如果加上一点代码,效果会更好的!加油!
回复 使用道具 举报
学习了!
回复 使用道具 举报
冒泡排序:       
int bubble(int a[],int n)
{
        int i,j,temp;
        for(i=0;i<n-1;i++)
                for(j=i+1;j<n;j++)
                        if(a[i]>a[j]){

                                temp = a[i];
                                a[i] = a[j];
                                a[j] = temp;
                        }
}



选择排序:
int chooseSort(int a[],int n)
{
        int i,j,temp,k;
        for(i=1;i<n;i++){

                k = i;//k存放当前循环的层数

                for(j=i+1;j<n;j++)
                        if(a[j]<a[k]){
                                k = j;        //交换标号
                                temp = a[k];
                                a[k] = a[i];
                                a[i] = temp;       
                               
                        }
        }

}
回复 使用道具 举报
嗯嗯!谢谢总结!!!
回复 使用道具 举报
不错不错
回复 使用道具 举报
没什么两样
回复 使用道具 举报
代码写起来都差不多,有点小区别,但是思路确是完全不同。
我很佩服能够想出这种排序的人,在计算机和人脑中取得了很好的平衡!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马