java常見資料演算法_選擇排序

來源:互聯網
上載者:User

標籤:demo   代碼   演算法   als   返回   元素   key   i+1   迴圈   

選擇排序的原理:
遍曆所有的元素,得到最小的元素,並將最小的元素與左邊第一個元素進行交換,再次遍曆除了第一個位置的所有元素,得到最小的元素,與左邊第二個元素進行交換。當進行第二次遍曆的時候,將最小的元素與左邊的第二個元素進行交換,如此迴圈遍曆,即可得到排序後的元素。
Demo實現的基本基本步驟:
1、準備數組
2、編寫常見的數組操作方法
3、編寫選擇排序的方法
4、測試選擇排序
具體參考如下:
package com.zcp.ch03;

/**

  • @author Administrator
  • 冒泡排序的實現
    */
    public class SelectArray {

    //數組
    private long[] arr = null;

    //數組中有效資料的大小
    private int elems;
    public SelectArray() {
    arr = new long[50];
    }

    public SelectArray(int length){
    arr = new long[length];
    }

    /**

    • 插入資料的操作
    • @param value
      */
      public void insert(long value){
      arr[elems] = value;
      elems++;
      }

    /**

    • 尋找指定的資料,如果能夠尋找到則返回數組的座標,否則返回-1.
    • @param value
    • @return
      */
      public int find(long value){
      int i = 0;
      for(i=0;i<elems;i++){
      if(value==arr[i])
      break;
      }

      if(i >(elems-1)){
      return -1;
      }

      return i;

    }

    /***

    • 刪除資料的操作,刪除成功返回true,刪除失敗返回false
    • @param value
      */
      public boolean delete(long value){

      int key = find(value);
      if(key == -1){
      System.out.println("刪除資料失敗,未尋找到要刪除的資料");
      return false;
      }
      for (int i = key; i < elems; i++) {
      arr[i] = arr[i+1];
      }
      elems--;
      return true;

    }

    /***

    • @param oldValue
    • @param newValue
    • @return 如果修改成功返回true,修改失敗返回false
      */
      public boolean changeValue(long oldValue,long newValue){
      int key = find(oldValue);
      if(key == -1){
      System.out.println("需要修改的資料不存在,修改失敗");
      return false;
      }
      arr[key] = newValue;
      return true;
      }

    /**

    • 該方法主要是實現了選擇排序
    • 具體的實現描述如下:
    • 該方法中的min 即表示最小的元素
    • 在進行一次遍曆後就將最小的元素放到數組的最左邊,然後迴圈進行即可實現選擇排序
    • */
      public void selectSort(){

      int min = 0;
      long tmp = 0;
      for (int i = 0; i < elems-1; i++) {

      for (int j = i; j < elems; j++) {    if(arr[min] > arr[j]){        min = j;    }}tmp = arr[i];arr[i] = arr[min];arr[min] = tmp;

      }

    }

    /**

    • 該方法主要是變數數組並顯示
      */
      public void disPlay(){
      for (int i = 0; i < elems; i++) {
      System.out.print(arr[i]+ " " );
      }
      System.out.println();
      }

}
測試代碼如下:
package com.zcp.ch03;

public class TestSelectMain {

public static void main(String[] args) {    SelectArray bubbleArray = new SelectArray();    bubbleArray.insert(10);    bubbleArray.insert(50);    bubbleArray.insert(80);    bubbleArray.insert(2);    bubbleArray.insert(2);    bubbleArray.disPlay();    bubbleArray.selectSort();;    System.out.println("選擇排序後的資料如下:");    bubbleArray.disPlay();}

}

java常見資料演算法_選擇排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.