冒泡、选择、插入三种排序

时间:2021-03-24 20:21:13

工作闲下来了,偶来学习下排序算法的思想,适当的缓解下压力,换个思考方式也很不错的。

冒泡排序:是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

实现:

  public class ubbleSort {

public static void main(String[] args){

int[] b={2,1,56,8,9,0};

for(int i=0;i<=b.length-1;i++){ //最多做n-1趟排序 

int temp=0;

//方法一:大数下沉

for(int j = b.length - 1; j > i; j--) {

if (b[j] < b[j - 1])

           {

               temp = b[j];

               b[j] = b[j - 1];

               b[j - 1] = temp;

           }

       }

//方法二:小数上浮

for(int j=1;j<(b.length-i);j++){

if(b[j-1]>b[j]){

temp=b[j-1];

b[j-1]=b[j];

b[j]=temp;

}

}

  }

for(int i=0;i<b.length;i++)

    System.out.println(b[i]);

}

}

选择排序:是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕

实现:

  public class electSort {

    public static void main(String[] args) {

int[] b={2,1,56,8,9,0};

for(int i=0;i<b.length;i++){

for(int j=i;j<b.length;j++){

if(b[i]<b[j]){

int temp=b[i];

b[i]=b[j];

b[j]=temp;

}

}

}

      for(int i=0;i<b.length;i++)

             System.out.println(b[i]);

}

}

插入排序 :是一种简单直观的排序算法。 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

实现  :

    /***
 * @date 2013-12-31 上午10:58:46
 * 工作原理:在已排序好的数组中b,对于待定排序的元素a,将有序数组b从后向前扫描,找到a元素即将插入的位置
 * 1.第一个元素是已经拍好的元素数组
 * 2.找到下一个新的待定元素,将已排序好的元素从后向前扫描,将待定元素插入已排序的元素中
 * 3.重复遇以上的步骤
 */
public class nsertSort {

public static void main(String[] args){

int[] b={2,1,56,8,9,0,3};

for(int i=1;i<b.length;i++){

int temp=b[i];

for(int j=i;j>0;j-- ){

if(temp<b[j-1]){

    b[j]=b[j-1];

   b[j-1]=temp;

}

}

}

for(int i=0;i<b.length;i++){

      System.out.println(b[i]);

}

}

}   


大家 互相交流。。。。。。