標籤:package bool 指定 java class val ems bre 一個
常見的演算法有非常多,今天我們就一起看看常見的演算法之冒泡排序。
冒泡排序的主要核心思想就是:
比較相鄰兩個元素,如果前一個元素的值比後一個元素的值大,則進行交換,經過對每個元素的比較,最後將最大的元素設定成最後一個元素,迴圈重複該操作,最後形成從小到大排序。
下面來看看我們的執行個體代碼: 1、準備我們的數組 2、準備數組的常用操作方法 3、編寫冒泡排序演算法 4、測試冒泡排序演算法的正確性; package com.zcp.ch02;
/**
- @author Administrator
冒泡排序的實現
*/
public class BubbleArray {
//數組
private long[] arr = null;
//數組中有效資料的大小
private int elems;
public BubbleArray() {
arr = new long[50];
}
public BubbleArray(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;
}
/**
- 實現冒泡排序的演算法
- 該方法中的i表示的是冒泡排序的比較次數
- 該方法中的j表示的是冒泡排序的兩兩的比較次數,至於j<elems-i-1,為什麼要減1,主要是下面兩兩比較的時候需要j+1,
否則就數組越界了
*/
public void bubbleSort(){
for (int i = 0; i < elems-1; i++) {
for (int j = 0; j < elems-i-1; j++) { if(arr[j]>arr[j+1]){ long tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; }}
}
}
/**
- 該方法主要是變數數組並顯示
*/
public void disPlay(){
for (int i = 0; i < elems; i++) {
System.out.print(arr[i]+ " " );
}
System.out.println();
}
}
測試代碼如下:
package com.zcp.ch02;
public class TestBubbleMain {
public static void main(String[] args) { BubbleArray bubbleArray = new BubbleArray(); bubbleArray.insert(10); bubbleArray.insert(50); bubbleArray.insert(80); bubbleArray.insert(2); bubbleArray.insert(5); bubbleArray.disPlay(); bubbleArray.bubbleSort(); System.out.println("冒泡排序後的資料如下:"); bubbleArray.disPlay();}
}
java常見資料演算法_冒泡排序