一、思想
是一种交换排序,。对[l,h]范围内的数据逐步缩小排序范围进行h-l+1趟冒泡排序。每一趟冒泡排序要做的就是把最大的数交换到尾部。
二、实现
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class 冒泡排序 {
public static void main(String[] args) {
Random r = new Random();
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = r.nextInt(100);
}
// for(int i=0;i<n;i++){
// nums[i]=scan.nextInt();
// }
System.out.println(Arrays.toString(nums));
new 冒泡排序().bubbleSort(nums, 0, n-1);
System.out.println(Arrays.toString(nums));
}
/**
* 对数组nums中[l,h]范围内的数据进行排序,从小到大
* @param nums
* @param l
* @param h
*/
public void bubbleSort(int[] nums,int l,int h){
// 长度为1时无需进行排序直接返回
if(l>=h){
return;
}
// 进行h-l次冒泡排序
for(int i=h;i>=l+1;i--){
// 此次冒泡排序的范围的是[l,i]
for(int j=l;j<i;j++){
if(nums[j]>nums[j+1]){
// 交换两个元素位置
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
}
}
网友评论