首页 > 编程语言 > 详细

数组(排序)

时间:2015-12-05 22:29:34      阅读:292      评论:0      收藏:0      [点我收藏+]

选择排序

package day07;

public class try_1 {
    public static void main(String[] args) {
          int array[] = new int[]{12,14,2365,57,79,35};
          int x;
          int y;
          int i;
          int temp;
          for(x=0;x<array.length-1;x++)
          {
              for(y=x+1;y<array.length;y++)
              {
                  if(array[y]<array[x])
                  {
                      temp=array[y];
                      array[y]=array[x];
                      array[x]=temp;
                      
                  }
                  
              }
              
          }
          for(i=0;i<array.length;i++)
          {
              System.err.print(array[i]+" ");
              
          }
    }

}
12 14 35 57 79 2365 

   从选择排序的思想或者是上面的代码中,我们都不难看出,寻找最小的元素需要一个循环的过程,而排序又是需要一个循环的过程。因此显而易见,这个算法的时间复杂度也是O(n*n)的。这就意味值在n比较小的情况下,算法可以保证一定的速度,当n足够大时,算法的效率会降低。并且随着n的增大,算法的时间增长很快。因此使用时需要特别注意。

技术分享

选择最大或者最小的那个,与前面按顺序排好的后面一位交换位置。时间复杂度为o(n2),空间复杂度为o(1),是不稳定排序

冒泡排序

 for(x=0;x<array.length-1;x++)
          {
              for(y=0;y<array.length-1-x;y++)
              {
                  if(array[y]>array[y+1])
                  {temp=array[y];
                  array[y]=array[y+1];
                  array[y+1]=temp;
              }}
          }

大的往后沉,逐轮比较元素递减。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。是稳定排序,最好的情况时间复杂度为o(n)最坏的情况时间复杂度为o(n2).

用Arrays.sort()函数进行排序也是非常快的,一般在开发的时候就不用再自己写排序函数,用java给封装好的函数就可以

 

 

技术分享

 

数组(排序)

原文:http://www.cnblogs.com/mmlovejj/p/5022359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!