黑马程序员技术交流社区

标题: 常见排序,你怎么实现? [打印本页]

作者: 夏日蓝雪    时间: 2014-6-2 22:11
标题: 常见排序,你怎么实现?
本帖最后由 夏日蓝雪 于 2014-6-5 10:10 编辑

两种常见排序:选择和冒泡,你一般怎么实现的呢?

public class Practise {
        public static void main(String[] args)
        {
        int[] a=new int[]{3,9,7,1,4,2,0,8,5};
        //xuanze(a);
        maopao(a);
        for(int i=0;i<a.length ;i++)
                System.out.print(a+" ");
        }
        static void xuanze(int[] a)//选择排序(选择位置,找合适的数)
        {
                for(int i=0;i<a.length-1;i++)
                        for(int j=i+1;j<a.length;j++)
                        {
                                if(a>a[j])
                                {
                                        int temp=a;
                                        a=a[j];
                                        a[j]=temp;
                                }
                        }
        }
        static void maopao(int[] a)//冒泡排序(相邻比较,最值冒出)
        {
                for(int i=0;i<a.length-1;i++)
                        for(int j=0;j<a.length-i-1;j++)
                        {
                                if(a[j]>a[j+1])
                                {
                                        int temp=a[j];
                                        a[j]=a[j+1];
                                        a[j+1]=temp;        
                                }
                        }
        }
}

作者: Lex    时间: 2014-6-2 22:15
简单选择排序  
(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;  
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。  
(2)实例:  
(3)用java实现  
[java] view plaincopy  
public class selectSort {   
    public selectSort(){   
        int a[]={1,54,6,3,78,34,12,45};   
        int position=0;   
        for(int i=0;i<a.length;i++){   
               
            int j=i+1;   
            position=i;   
            int temp=a[i];   
            for(;j<a.length;j++){   
            if(a[j]<temp){   
                temp=a[j];   
                position=j;   
            }   
            }   
            a[position]=a[i];   
            a[i]=temp;   
        }   
        for(int i=0;i<a.length;i++)   
            System.out.println(a[i]);   
    }   
}   

冒泡排序  
(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。  
(2)实例:  
  
(3)用java实现  
[java] view plaincopy  
public class bubbleSort {   
public  bubbleSort(){   
     int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};   
    int temp=0;   
    for(int i=0;i<a.length-1;i++){   
        for(int j=0;j<a.length-1-i;j++){   
        if(a[j]>a[j+1]){   
            temp=a[j];   
            a[j]=a[j+1];   
            a[j+1]=temp;   
        }   
        }   
    }   
    for(int i=0;i<a.length;i++)   
    System.out.println(a[i]);      
}   
}

作者: 夏日蓝雪    时间: 2014-6-4 16:19
Lex 发表于 2014-6-2 22:15
简单选择排序  
(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;  
然后在剩 ...

谢谢,学习了!你的第一种方法效率应该比我的高。
作者: 淡淡柠檬茶    时间: 2014-6-4 16:45
给力,大赞啊
作者: 韩天雷    时间: 2014-6-4 16:47
学习一下~
作者: 、海    时间: 2014-6-4 21:46
学习学习
作者: 四顾行者    时间: 2014-6-4 23:03
说冒泡排序的效率更快点,但是实际开发估计用的都是数组的sort方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2