程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 排序算法的Java實現

排序算法的Java實現

編輯:關於JAVA

下面是幾種排序的用Java的實現:

冒泡排序

public class BubbleSortDemo
{
   /**//*
   * 從前到後掃描序列,比較相鄰的兩個元素大小,若發現逆序則交換位置 ,
   * 使最大的達到序列的最後位置。然後再從後到前掃描剩下的序列,如此 。
   * 當數列有序後不再繼續循環
   */
   private void bubbleSort(int[] numlist)
   {
     int in,out,temp;
     boolean flag = false;
     //從後到前,從最後一項開始到第二項掃描數列。
     for( out=numlist.length-1; out>0;out--)
     {
       flag = true;
       //從第一項到第out項掃描數列
       for(in=0; in<out; in++)
       {
         //當前項大於後項,則交換位置。
         if(numlist[in]>numlist[in+1])
         {
           temp = numlist[in];
           numlist[in] = numlist[in+1];
           numlist[in+1] = temp;
           flag = false;
         }
       }
       if(flag) break;

       for(int i=0; i<numlist.length; i++)
         System.out.print(numlist[i]+ " ");
       System.out.println();
     }
   }
   //輸出數列
   public void display(int[] numlist)
   {
     for(int i=0; i<numlist.length; i++)
       System.out.print(numlist[i]+ " ");
     System.out.println();
   }

   public static void main(String[] args)
   {
     BubbleSortDemo sort = new BubbleSortDemo();
     int num[] = {4,11,17,6,1,2,13,15};

     System.out.println("原序是:");
     sort.display(num);
     System.out.println("每次冒泡排序後是:");
     sort.bubbleSort(num);
   }
}

插入排序

public class InsertSortDemo
{
   private void insertSort(int[] numlist)
   {
     int in, out,temp;
     //從out處分開數列
     for(out=1; out<numlist.length; out++)
     {
       in = out;
       temp = numlist[in]; //temp為待排序數據
       while(in>0 && temp<numlist[in-1])  //數 列值大於排序值時,
       {
         numlist[in] = numlist[in-1]; //數列向右移一位
         --in; //指針向左移一位
       }
       numlist[in] = temp; //插入待排序的數據
     }
   }
   public void display(int[] numlist)
   {
     for(int i=0; i<numlist.length; i++)
       System.out.print(numlist[i]+ " ");
     System.out.println();
   }

   public static void main(String[] args)
   {
     InsertSortDemo sort = new InsertSortDemo();
     int num[] = {4,11,17,6,1,2,13,15};

     System.out.print("原序是:");
     sort.display(num);

     System.out.print("插入排序是:");
     sort.insertSort(num);
     sort.display(num);
   }
}

選擇排序

public class SelectSortDemo
{
   /**//*
   * 首先找出最小的數據,讓它與第一項互換,這樣最小的數據項就在第一 位。
   * 接著從剩下的元素中找出最小的元素,與第二項互換,使第二小的元素 放在第二位,
   * 依此類推,直至整個數列有序。
   */
   private void selectSort(int[] numlist)
   {
     int min,in,out,temp;
     for(out=0; out<numlist.length; out++)
     {
       min = out; //將out項設為最小項

       for(in=out+1;in<numlist.length; in++)    //從第二 項開始掃描
         if(numlist[in]<numlist[min])      //找到最 小項in,將in作為最小項
           min = in;
       //out項與最小值交換
       temp = numlist[out];
       numlist[out] = numlist[min];
       numlist[min] = temp;
     }
   }

   public void display(int[] numlist)
   {
     for(int i=0; i<numlist.length; i++)
       System.out.print(numlist[i]+ " ");
     System.out.println();
   }

   public static void main(String[] args)
   {
     SelectSortDemo sort = new SelectSortDemo();
     int num[] = {4,11,17,6,1,2,13,15};

     System.out.print("原序是:");
     sort.display(num);

     System.out.print("選擇排序是:");
     sort.selectSort(num);
     sort.display(num);
   }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved