运用冒泡排序和选择排序
//冒泡排序 , 选择排序
public class paixu {
public static void main(String[] args) {
int[] arr = new int[] {6,8,7,5,9,1,2,};
maopao(arr);
System.out.println("--------------------------------------");
xuanze(arr);
}
//冒泡排序
public static void maopao(int[] a) {
int temp ;
for(int i=0 ;i < a.length ;i++) {
for(int j=0 ; j< a.length-i -1;j++) { //a.length-1-i 数组最大下标 第一次循环数组长 a.length-1,第二次a.length-1-1,依次类推
if(a[j]>a[j+1]) {
//互换位置
temp = a[j];
a[j] = a[j+1] ;
a[j+1] = temp ;
}
}
}
//遍历数组排序
for(int i=0 ;i < a.length ;i++) {
System.out.printf("arr[%d]=%d\n",i,a[i]);
}
}
//选择排序
public static void xuanze(int[] a) {
for(int i = 0 ; i<a.length ; i++) {
int max = a[0]; //假设最大值为第一个
int idx = 0 ;
//找到最大值和最大值得下标
for(int j=0;j <a.length-i ;j++) { //a.length-i 最大长度,,,,,,,a.length-1-i最大下标
if(a[j]>max) {
max = a[j];
idx = j ;
}
}
//互换位置排序
if(idx<a.length-1-i) { //最大值得下标idx,和当前最大下标a.length-1-i
int temp = a[a.length-1-i] ;
a[idx] = a[a.length-1-i] ;
a[a.length-1-i] = temp ;
}
}
//打印出
for(int i=0 ;i < a.length ;i++) {
System.out.printf("arr[%d]=%d\n",i,a[i]);
}
}
}
java自带函数的排序
1.排序: Arrays.sort(数组名);
2.折半查找的前提是先排序,后查找: Arrays.binarySearch(数组名, 被查数)
import java.lang.reflect.Array;
import java.util.Arrays;
public class sort {
public static void main(String[] args) {
/**
* 一维数组的几种写法
*/
// 1 动态输入
int[] arr = new int[5];
arr[0] = 75 ;
arr[1] = 65 ;
arr[2] = 71 ;
arr[3] = 55 ;
arr[4] = 95 ;
// 2 静态输入
int[] str = new int[] {0,5,9,6,8,1,7,3};
// 3 静态输入
int[] sort = {1,5,9,6,8,7,3,2};
//自带函数升排序
Arrays.sort(arr);
for(int i=0 ; i< arr.length ; i++) {
System.out.println("arr="+arr[i]);
}
//折半查找
int idx = Arrays.binarySearch(arr, 71);
System.out.println("idx="+idx);
}
//自带函数降排序
int[] a = {10,7,4,12,47,1};
Arrays.sort(a);
for(int i=a.length -1 ; i >= 0 ; i--) {
System.out.println("arr="+a[i]);
}
}