一:冒泡排序法
冒泡排序思想
两两比较,将较大的值往后放;第一次比较完毕,最大值就出现在最大索引处!依次这样比较:
规律:
第一次:有0个不比
第二次:有1个不比
...
比较的次数:数组长度-1次
记忆:外层arr.length-1,内层:arr.length-1-i
实现代码:
class ArrayTest{
public static void main(String[] args){
//定义数组,静态初始化
int[] arr = {24 ,69 ,87,57,13} ;
//遍历数组
System.out.println("排序前: ") ;
printArray(arr) ;
System.out.println("-------------------------------") ;
System.out.println("排序后:") ;
bubboleSort(arr) ;//排序
printArray(arr) ;//输出结果
}
//最终版代码:使用方法完成冒泡排序
public static void bubboleSort(int[] arr){
for(int x = 0 ; x < arr.length-1 ; x ++){ //x = 0 ; 1 2,3 控制比较的次数
for(int y = 0 ; y < arr.length-1-x ; y++){//y表示元素的角标
if(arr[y] > arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
}
//遍历的功能
public static void printArray(int[] arr){
//输出"["
System.out.print("[") ;
//遍历数组
for(int x = 0 ; x < arr.length ; x ++){
if(x == arr.length-1){
System.out.println(arr[x] +"]") ;
}else{
System.out.print(arr[x] +", ") ;
}
}
}
二:选择排序
选择排序思想:
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
规律:第一次是从0索引开始和其他的进行比较
第二次是从1索引开始和其他的进行比较
。。。
最后一次是数组长度-2的元素和数组长度-1的元素进行比较
记忆:外层:arr.length-1,内层:arr.length,起始:j=i+1
代码实现
class XuanZe{
public static void main(String[] args){
int[] arr={55,28,99,35,5};
//遍历数组
System.out.println("排序前: ") ;
printArray(arr) ;
System.out.println("-------------------------------") ;
System.out.println("排序后:") ;
selectSort(arr) ;//排序
printArray(arr) ;//输出结果
}
//最终版代码:使用方法完成选择排序
public static void selectSort(int[] arr){
for(int x = 0 ; x < arr.length-1 ; x ++){ //x = 0 ; 1 2,3 控制比较的次数
for(int y = x+1 ; y < arr.length ; y++){//y表示元素的角标
if(arr[x] > arr[y]){
int temp = arr[x] ;
arr[x] = arr[y] ;
arr[y] = temp ;
}
}
}
}
//遍历的功能
public static void printArray(int[] arr){
//输出"["
System.out.print("[") ;
//遍历数组
for(int x = 0 ; x < arr.length ; x ++){
if(x == arr.length-1){
System.out.println(arr[x] +"]") ;
}else{
System.out.print(arr[x] +", ") ;
}
}
}
}
三. jdk排序
java.util.Arrays.sort(数组名);//JDK提供(升序)
若需降序,则手动序
代码:
class JDKSort{
public static void main(String[] args){
int[] arr={22,33,85,12,6};
java.util.Arrays.sort(arr);
/*//手动倒序
for(inti=0;i<arr.length/2;i++){
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
//遍历
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
System.out.println();
}
}