package struct;
/**
*
* @作者:dyy
* @公司:陕西科技大学
* @修改日期:
* @邮箱:[email protected]
* @描述:Java实现几种常见排序
*/
//选择排序类
class SelectSort{
public void selectSort(int[] arr){
for(int i = 0;i < arr.length; i++){
int currentMax = i;//记录当前的最大值下标
for(int j = i + 1;j < arr.length;j++){
//找到最大值下标
if(arr[j] > arr[currentMax]){
currentMax = j;
}
}
int temp = arr[i];
arr[i] = arr[currentMax];
arr[currentMax] = temp;
}
}
public void print(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}
//冒泡排序类
class BubbleSort{
//冒泡排序的实现
public void bubbleSort(int[] arr){
for(int i = 0;i < arr.length - 1;i++){
for(int j = 0;j < arr.length - 1 - i;j++){
if(arr[j] < arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//打印数组
public void print(int[] a){
for(int i =0 ;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}
//插入排序
class InsertSort{
public void insertSort(int[] arr){
for(int i = 0; i < arr.length - 1;i++){
//将第一个元素当作排好序的
int j;
int insert = arr[i];
for(j = i;j > 0 && insert>arr[j-1];j--){
arr[j] = arr[j-1];
}
arr[j] = insert;
}
}
//打印数组
public void print(int[] a){
for(int i =0 ;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}
public class TestVeriousSort {
public static void main(String[] args) {
int[] arr1 = {13,2,6,34,1,4,9,7,5};
//选择排序
System.out.println("选择排序"+"\n");
SelectSort obj = new SelectSort();
System.out.println("初始的数组:");
obj.print(arr1);
System.out.println("\n"+"排序后的数组:");
obj.selectSort(arr1);
obj.print(arr1);
//冒泡排序
System.out.println("\n"+"冒泡排序"+"\n");
BubbleSort obj1 = new BubbleSort();
System.out.println("初始的数组:");
obj1.print(arr1);
System.out.println("\n"+"排序后的数组:");
obj1.bubbleSort(arr1);
obj1.print(arr1);
//插入排序
System.out.println("\n"+"冒泡排序"+"\n");
InsertSort obj2 = new InsertSort();
System.out.println("初始的数组:");
obj2.print(arr1);
System.out.println("\n"+"排序后的数组:");
obj2.insertSort(arr1);
obj2.print(arr1);
}
}
未完待续。