標籤: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++;
}
/**
}
/***
- 刪除資料的操作,刪除成功返回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常見資料演算法_選擇排序