package com.Algorithm.Search_Sort;
import java.util.Arrays;
public class Sort {
public int array[] = {99,34,76,92,34,17,77,41,40,36,6};
//冒泡排序法:比较条件为array[j]>array[j+1]为稳定排序,比较条件为array[j]>=array[j+1]为不稳定排序
public void BubbleSort(){
//进行N-1轮
for(int i=0;i<array.length-1;i++){
//每轮进行N-1-i次比较
for(int j=0;j<array.length-1-i;j++)
if(array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
System.out.println("冒泡排序法:"+Arrays.toString(array));
}
//选择排序法:不稳定的排序方法
public void SelectSort(){
//
for(int i=0;i<array.length-1;i++){
//假设每轮的第一个数是待排序列的最小值,记录最小值的数组下标
int minIndex=i;
//从待排数组中找到最小值,记录真正最小值下标
for(int j=i+1;j<array.length;j++){
if(array[j] < array[minIndex]){
minIndex=j;
}
}
//原第一个 与 最小值 交换位置
int temp=array[i];
array[i]=array[minIndex];
array[minIndex]=temp;
}
System.out.println("选择排序法:"+Arrays.toString(array));
}
//插入排序法:稳定排序
public void InsertSort(){
//进行N-1轮
for(int i=1;i<array.length;i++){
//记录下当前要插入的数及其下标
int temp=array[i];
int j=i;
//从最后一位开始,然后与其前面一位做比较,如果比其小,就覆盖
while(j<0 && temp<array[j-1]){
array[j]=array[j-1];
j--;
}
}
System.out.println("插入排序法:"+Arrays.toString(array));
}
//三种打印int数组的方法
public void print(){
//Arrays工具类中toString静态方法遍历
System.out.println(Arrays.toString(array));
//正常for循环遍历
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
//foreach语句遍历
for(int j:array){
//这里的j不再是下标的意思,而是array中遍历取出的每个数
//如果输出array[j],大概率会出现数组越界的错误
System.out.print(j+" ");
}
}
public static void main(String[] args) {
Sort sort=new Sort();
sort.BubbleSort();//冒泡排序法
sort.SelectSort();//选择排序法
sort.InsertSort();//插入排序法
}
}
输出结果