package example.xml;
import java.util.Random;
public class SortDemo {
public static int[] arrays = new int[10];
public static int swapTimes = 0; //冒泡排序 交换次数
public static void main(String[] args) {
generateArray("random");
print(arrays);
bubbleSort(arrays);
print(arrays);
}
public static void generateArray(String type){
if("positive".equals(type)){//正序
for(int i=0;i<10;i++){
arrays[i]=i+1;
}
}
if("inverted".equals(type)){//逆序
for(int i=0;i<10;i++){
arrays[i]=10-i;
}
}
if("random".equals(type)){//随机
Random random = new Random();
for(int i=0;i<10;i++){
int x= random.nextInt(20);
if(x==0){continue;}
arrays[i] = x;
}
}
}
public static void print(int[] a){
for(int i=0;i<a.length;i++){
System.out.print(arrays[i]+" ");
}
System.out.println();
}
/**
* 冒泡排序
* @param a
*/
public static void bubbleSort(int[] a){
if(a==null||a.length<=0){return;}
boolean flag = false;
int i=0; //趟数
do{
flag=false;
for(int j=0;j<a.length-1-i;j++){//比较次数
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=true;
swapTimes++;//交换次数+1
}
}
i++;
}while(flag);
System.out.println("趟数:"+i);
System.out.println("交换次数:"+swapTimes);
}
/**
* 选择排序
* @param a
*/
public static void selectSort(int[] a){
if(a==null||a.length<=0){return;}
for(int i=0;i<a.length;i++){
int min = i; //将当前下标定义为最小值下标
for(int j=i+1;j<a.length;j++){
if(a[min]>a[j]){
min=j;
}
}
System.out.println("当前最小下标:"+min);
if(i!=min){
/* 可改变原数组
* int temp = a[i];
* a[i] = a[min];
* a[min] = temp;
* */
swap(a[i],a[min]); //不改变原数组
swap(arrays,i,min); //改变原数组
}
}
}
/**
* 值传递 --不改变原数组
* @param x
* @param y
*/
public static void swap(int x,int y){
int temp=x;
x=y;
y=temp;
}
/**
* 引用传递 --改变原数组
* @param a
* @param x
* @param y
*/
public static void swap(int[] a,int x,int y){
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}
}
java实现冒泡排序和选择排序算法
最新推荐文章于 2024-03-24 13:01:15 发布