java常見數據算法_插入排序
抽出一個元素,在其前面的元素中找到適當的位置進行插入。
其參考實現如下:
package com.zcp.ch04;
/**
- @author Administrator
-
冒泡排序的實現
*/
public class InsertArray {//數組
private long[] arr = null;//數組中有效數據的大小
private int elems;
public InsertArray() {
arr = new long[50];
}public InsertArray(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){
if(key == -1){
System.out.println("需要修改的數據不存在,修改失敗");
return false;
}
arr[key] = newValue;
return true;
}
/**
- 插入排序的算法
- 插入一個元素,在其前面的元素中找到適當的位置進行插入
- 分析:從插入排序的定義可以看出,插入一個元素在其前面的元素中找到合適的位置進行插入
-
所以:我們在找這個元素的時候需要從第二個元素開始找(數組的下標為1),然後依次找後面的元素
*/
public void insertSort(){long keyValue = 0;
//這裏定義i的目的就是我們需要找的元素的坐標
for (int i = 1; i < elems; i++) {
//獲取到我們要查找的一個元素
keyValue = arr[i];
int j = 0;
for (j = i; ((j > 0) && (arr[j-1] > keyValue)); j--) {
//通過裏面的判斷arr[j-1]>keyValue 的值的時候,將整體右移,空出最左邊的位置
arr[j] = arr[j-1];
}
//將選擇的數據插入到最左邊
arr[j] = keyValue;
}
}
/**
- 該方法主要是變量數組並顯示
*/
public void disPlay(){
for (int i = 0; i < elems; i++) {
System.out.print(arr[i]+ " " );
}
System.out.println();
}
}
測試Demo如下:
package com.zcp.ch04;
public class TestInsertMain {
public static void main(String[] args) {
InsertArray bubbleArray = new InsertArray();
bubbleArray.insert(10);
bubbleArray.insert(500);
bubbleArray.insert(80);
bubbleArray.insert(2);
bubbleArray.insert(23);
bubbleArray.disPlay();
bubbleArray.insertSort();;;
System.out.println("選擇排序後的數據如下:");
bubbleArray.disPlay();
}
}
java常見數據算法_插入排序