java简单实现冒泡、快速、选择、插入排序算法

时间:2022-02-14 15:56:29

程序主要实现了冒泡排序、快速排序、选择排序、插入排序算法
数据类Data.java
排序算法类SortMethods.java
主类Main.java
示例程序:
数据类Data.java

package callclasstestoop;

public class Data {
public int[] dataArray(){
int[] data = new int[]{2, 1, 6,88,43,21,90,31,5,18};
return data;
}
}

排序算法类SortMethods.java

package callclasstestoop;
/**
* 排序tool类
* @author gt.liu
* time 2016年10月12日 上午10:17:48
* TestJava callclasstestoop SortMethods.java
*/

public class SortMethods {
public SortMethods() {
// TODO Auto-generated constructor stub
System.out.println("==调用SortMethods类,这是构造方法==");
System.out.println("=========调用排序算法类后========");
}
// 排序算法实现
// 冒泡排序算法
public void maoPaoSort(int[] array) {
System.out.println("**********冒泡排序算法*********");
System.out.println("public void maoPaoSort(int[] array){...}");
int temp;
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
//快速排序算法***使用分治策略把一个序列分为两个序列
public void kuaiSuSort(int[] array, int start, int end) {
//System.out.println("==========快速排序算法=========");//由于递归调用注掉
if (start < end) {
int base = array[start];// 选定基准值(第一个值作为基准值)
//int temp;// 交换临时值
int i = start;
int j = end;
while(i < j){
while(i<j && array[j] > base){
j--;
}
if(i<j){
array[i] = array[j];
i++;
}
while(i<j && array[i] < base){
i++;
}
if(i<j){
array[j]=array[i];
j--;
}
array[i] = base;
}
kuaiSuSort(array, start, i - 1);
kuaiSuSort(array, i + 1, end);
}
}//kuaiSuSort(){...} over

//选择排序算法***每次寻找最小(大)的值放在最末尾的位置
public void xuanZeSort(int[] array){
System.out.println("**********选择排序算法**********");
int temp;
for(int i = 0; i < array.length; i++){
int flag = i;
for(int j = i+1; j < array.length; j++){
if(array[flag] > array[j]){
flag = j;
}
}
temp = array[i];
array[i] = array[flag];
array[flag] = temp;
}
}//xuanZeSort(){...} over

//插入排序算法
public void chaRuSort(int[] array){
System.out.println("**********插入排序算法**********");
int temp;
int j;
for(int i = 1; i < array.length; i++){
temp = array[i];
for(j = i; j > 0 && temp < array[j-1]; j--){
array[j] = array[j-1];
}
array[j] = temp;
}
}

}

主类Main.java

package callclasstestoop;
/**
* 主类Main
* @author gt.liu
* time 2016年10月12日 上午10:17:26
* TestJava callclasstestoop Main.java
*/

public class Main {
public static void main(String[] args) {
//数据载入
Data array = new Data();//Data类
int[] arrayData = array.dataArray();
//数据输出测试
System.out.println("数组长度:" + arrayData.length);
System.out.println("==========原始数组============");
for(int i = 0; i < arrayData.length; i++){
System.out.print(arrayData[i] + "\t");
}
System.out.println("\n===========================");

//排序算法类载入
SortMethods sort = new SortMethods();//SortMethods类
//sort.maoPaoSort(arrayData);//调用sort中的冒泡排序算法
//调用sort中的快速排序算法
//System.out.println("**********快速排序算法**********");
//sort.kuaiSuSort(arrayData, 0, arrayData.length-1);
//sort.xuanZeSort(arrayData);//调用sort中的选择排序算法
sort.chaRuSort(arrayData);//调用sort中的插入排序算法



//输出排序结果
System.out.println("==========排序后数据===========");
for(int i = 0; i < arrayData.length; i++){
System.out.print(arrayData[i] + "\t");
}
System.out.println("\n===========================");
}
}