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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张周飞 于 2014-7-13 10:01 编辑

前几期版块很多人提到排序的问题:解决你们关于排序的问题!!!!!!!!

---------------------:分了四版块来写:---------------------------------------
前几期版块很多人提到排序的问题:解决你们关于排序的问题 一:
http://bbs.itheima.com/thread-128457-1-1.html

前几期版块很多人提到排序的问题:解决你们关于排序的问题二 :
http://bbs.itheima.com/thread-128458-1-1.html

前几期版块很多人提到排序的问题:解决你们关于排序的问题 三:
http://bbs.itheima.com/thread-128460-1-1.html

前几期版块很多人提到排序的问题:解决你们关于排序的问题 四 :
http://bbs.itheima.com/thread-128466-1-1.html


{:3_57:}愿能帮到大家...............................................

具体如下----八大排序:1:直接插入排  2:希尔排序(最小增量排序)     3:简单选择排     4:堆排
5:冒泡排序         6:快速排序         7:归并排        8:基数排序


具体如下》》》》》
8种排序之间的关系:




1, 直接插入排序
(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排
好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数
也是排好顺序的。如此反复循环,直到全部排好顺序。
(2)实例
   

(3)用java实现
1  package com.njue;  
2   
3 public class insertSort {  
4 public insertSort(){  
5     inta[]={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};  
6     int temp=0;  
7     for(int i=1;i<a.length;i++){  
8        int j=i-1;  
9        temp=a;  
10        for(
int j=0
;j>=0&&temp<a[j];j--){  
11        a[j+1]=a[j];                       //将大于temp的值整体后移一个单位
12        }  
13        a[j+1]=temp;  
14     }  
15     for(int i=0;i<a.length;i++)  
16        System.out.println(a);  
17 }  
18 }
2,希尔排序(最小增量排序)
(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。
(2)实例:
     
(3)用java实现
1 public class shellSort {  
2 public  shellSort(){  
3     int a[]={1,54,6,3,78,34,12,45,56,100};  
4     double d1=a.length;  
5     int temp=0;  
6     while(true){  
7         d1= Math.ceil(d1/2);  
8         int d=(int) d1;  
9         for(int x=0;x<d;x++){  
10             for(int i=x+d;i<a.length;i+=d){  
11                 int j=i-d;  
12                 temp=a;  
13                 for(;j>=0&&temp<a[j];j-=d){  
14                 a[j+d]=a[j];  
15                 }  
16                 a[j+d]=temp;  
17             }  
18         }  
19         if(d==1)  
20             break;  
21     }  
22     for(int i=0;i<a.length;i++)  
23         System.out.println(a);  
24 }  
25 }
3.简单选择排序
(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
(2)实例:

      
(3)用java实现
1 public class selectSort {  
2     public selectSort(){  
3         int a[]={1,54,6,3,78,34,12,45};  
4         int position=0;  
5         for(int i=0;i<a.length;i++){  
6               
7             int j=i+1;  
8             position=i;  
9             int temp=a;  
10             for(int j=0 ;j<a.length;j++){  
11             if(a[j]<temp){  
12                 temp=a[j];  
13                 position=j;  
14             }  
15             }  
16             a[position]=a;  
17             a=temp;  
18         }  
19         for(int i=0;i<a.length;i++)  
20             System.out.println(a);  
21     }  
22 }  

更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 很给力!

查看全部评分

3 个回复

正序浏览
原来有这么多方法
回复 使用道具 举报
感谢楼主细心,真心受用。。。
回复 使用道具 举报
楼主威武~~~~~~膜拜!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马