此篇文章实现了冒泡排序和快速排序,下面将这两种算法的代码贴出来,简单创建一个java项目就可进行测试
1.创建一个java项目,项目名为prj_algorithm,在src下创建algorithm包,在此包下创建AlgorithmTest.java类
2.AlgorithmTest.java类中的代码,
package algorithm;
public class AlgorithmTest {
/**
* @param args
*/
public static void main(String[] args) {
int[] sourceArray = new int[]{9,17,12,19,30,50,30,40};
AlgorithmTest algorithmTest = new AlgorithmTest();
//algorithmTest.bubbleSort(sourceArray);
algorithmTest.quickSort(sourceArray, 0, sourceArray.length - 1);
for(int i : sourceArray) {
System.out.println(i);
}
}
/**
* 冒泡排序算法实现
* @param sourceArray
*/
private void bubbleSort(int[] sourceArray) {
for(int i = 0; i < sourceArray.length; i++) {
for(int j = i + 1; j < sourceArray.length; j++) {
if(sourceArray[i] > sourceArray[j]) {
sourceArray[j] = sourceArray[i] + sourceArray[j];
sourceArray[i] = sourceArray[j] - sourceArray[i];
sourceArray[j] = sourceArray[j] - sourceArray[i];
}
}
}
for(int i : sourceArray) {
System.out.println(i);
}
}
/**
* 获得中间索引
* @param sourceArray
*/
private int getMiddleIndex(int[] sourceArray, int low, int high) {
int pivotkey = sourceArray[low]; //枢纽记录
while(low < high) {
while(low < high && sourceArray[high] >= pivotkey) --high;
sourceArray[low] = sourceArray[high];
while(low < high && sourceArray[low] <= pivotkey) ++low;
sourceArray[high] = sourceArray[low];
}
sourceArray[low] = pivotkey;
return low;
}
/**
* 快速排序算法实现
* @param sourceArray
*/
private void quickSort(int[] sourceArray, int low, int high) {
if(low < high) {
int middleIndex = getMiddleIndex(sourceArray, low, high);
quickSort(sourceArray, low, middleIndex - 1);
quickSort(sourceArray, middleIndex + 1, high);
}
}
}