黑马程序员技术交流社区

标题: 前几期版块提到排序的问题:解决你们关于排序的问题一 [打印本页]

作者: 张周飞    时间: 2014-7-10 11:15
标题: 前几期版块提到排序的问题:解决你们关于排序的问题一
本帖最后由 张周飞 于 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 }  

图片9.png (26.32 KB, 下载次数: 49)

图片9.png

图片10.png (42.36 KB, 下载次数: 64)

图片10.png

图片11.png (35.3 KB, 下载次数: 46)

图片11.png

图片12.png (46.73 KB, 下载次数: 56)

图片12.png

图片13.png (86.73 KB, 下载次数: 61)

图片13.png

图片14.png (44.81 KB, 下载次数: 53)

图片14.png

图片15.png (133.62 KB, 下载次数: 52)

图片15.png

图片1.png (122.83 KB, 下载次数: 41)

图片1.png

图片6.png (54.81 KB, 下载次数: 62)

图片6.png

图片7.png (74.96 KB, 下载次数: 42)

图片7.png

图片8.png (91.22 KB, 下载次数: 47)

图片8.png

图片9.png (26.32 KB, 下载次数: 45)

图片9.png

图片10.png (42.36 KB, 下载次数: 51)

图片10.png

图片11.png (35.3 KB, 下载次数: 46)

图片11.png

图片12.png (46.73 KB, 下载次数: 36)

图片12.png

图片13.png (86.73 KB, 下载次数: 47)

图片13.png

图片14.png (44.81 KB, 下载次数: 59)

图片14.png

图片15.png (133.62 KB, 下载次数: 53)

图片15.png

作者: 渴望学习    时间: 2014-7-10 11:28
楼主威武~~~~~~膜拜!
作者: 威猛的小熊    时间: 2014-8-6 07:49
感谢楼主细心,真心受用。。。
作者: 阿磊    时间: 2014-8-6 08:28
原来有这么多方法




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