码迷,mamicode.com
首页 > 编程语言 > 详细

基础排序java实现

时间:2015-09-07 21:11:54      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

需要掌握的基础排序

一、插入排序  1)直接插入排序2)希尔排序   

二、交换排序  1)冒泡排序2)快速排序

三、选择排序  1)简单选择排序2)堆排序

四、归并排序

 

一、插入排序

  简单的理解就是遍历整个数组,在过程中对每个数都跟前面进行比较只要比它小就往前挪。

  1) 直接插入排序实现

      public static void directInsert(int [] data)
      {
          int temp=0;
          int len=data.length;
          for(int i=1;i<len;i++)
          {
              temp=data[i];
              int j=i-1;
              while(j>-1 && temp<data[j])
              {
                  data[j+1]=data[j];
                  j--;
              }
              data[j+1]=temp;
          }
      }

  2)希尔排序

  理解:http://blog.csdn.net/morewindows/article/details/6668714

  按照n/2,n/4,n/8,,,,1的间隔对数组进行直接插入排序。当数组基本有序时,插入排序比较的次数最少,间隔为1的时候基本有序,最后一次执行插入排序效果最好。

      public static void shellInsert(int [] data)
      {
          int temp=0;
          int len=data.length;
          for(int gap=len/2;gap>0;gap/=2)//最外围的缩小增量
          {
              for(int i=0;i<len;i+=gap)//间隔排序比如13579    246810  这样的等间隔分组   直接插入排序
              {
                  temp=data[i];
                  int j=i-gap;
                  while(j>-1 && temp<data[j])
                  {
                      data[j+gap]=data[j];
                      j-=gap;
                  }
                  data[j+gap]=temp;
              }
          }
      }

 

二、交换排序

  1)冒泡排序

  相邻的两个数比较大小,直到交换完成。

  第一趟把最大的数换到了最右边,第二趟第二大的换到了倒数第二个,每次对前n-i个数进行排序。

      public static void bubble(int [] data)
      {
          int len=data.length;
          int cnt=0;//交换次数。假如为0,排序完成跳出
          int temp=0;
          for(int i=1;i<len;i++)//进行n-1趟排序
          {
              for(int j=0;j<len-i;j++)
              {
                  if(data[j]>data[j+1])
                  {
                      temp=data[j];
                      data[j]=data[j+1];
                      data[j+1]=temp;
                      cnt++;
                  }
              }
              if(cnt==0)
                  break;
              cnt=0;
          }
      }

  2)快速排序

  

基础排序java实现

标签:

原文地址:http://www.cnblogs.com/maydow/p/4789866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!