JAVA-冒泡排序
冒泡排序是两两进行比较,将最大值放在最后
代码如下:
static void BubbleSort(int[] arr) {
for(int j = arr.length-1;j>0;j--) {
for(int i = 0;i<j;i++) {
if(arr[i]>arr[i+1]) {
int temp = arr[i];
arr[i]=arr[i+1];
arr[i+1] = temp;
}
}
}
}
static void swap (int[] arr,int i,int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
static void print(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
public static void main(String[] args) {
int[] arr= {9,3,1,4,6,8,7,5,2};
BubbleSort(arr);
print(arr);
}
两个值互换:
首先引入一个 temp;
将arr[i]的值给 temp----(此时temp为arr[i])–temp = arr[i]
将arr[j]的值给arr[i]----(此时arr[i]的值为arr[j])–arr[i]=arr[j]
最后将arr[i]的值给arr[i] – (此时arr[j]的值为arr[i]) --(这里就用到刚开始的temp,temp中存储的值为arr[i])–arr[j]=temp
可以对冒泡方法进行验证 :
代码如下(这里展示对数器代码):
static int[] genertateRandom() {
Random r = new Random();
int[] arr = new int[100];
for(int i=0;i<arr.length;i++) {
arr[i] = r.nextInt(100);
}
return arr;
}
static void check() {
int[] arr1 = genertateRandom();
int[] arr2 = new int[arr1.length];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
Arrays.sort(arr1);
BubbleSort(arr2);
boolean same = true;
for(int i=0;i<arr1.length;i++) {
if(arr1[i]!=arr2[i]) {
same = false;
}
}
System.out.println(same);
}