/*
规律:相邻元素比较,如果符合条件换位。
第一圈后最大的元素跑到了最右边,第一圈总共有数组的长度-1个元素参与比较
第二圈比较时少了一个元素参与比较,次大的出现在倒数第二的位置
一次类推,共需要比较数组长度length-1次!
代码实现:
*/
package com.itheima.sh.demo;
public class BubbleSort{
public static void main(String [] args){
int []arr = {2,8,5,7,14,6};
System.out.println("排序之前:");
printArray(arr);
bubbleSort(arr);
System.out.println("排序之后:");
printArray(arr);
} //定义功能:冒泡排序
public static void bubbleSort(int []arr){
for(int i=0;i<arr.length-1;i++){
for(int j =0;j<arr.length-i-1;j++){//-i让每次参与的元素少一个;-1避免角标越界
//相邻元素比较
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
} //定义功能,打印数组
public static void printArray(int [] arr){
for(int i =0;i<=arr.length-1;i++){
System.out.print("arr["+i+"]="+arr+"\t");
}
System.out.println();
}
}
2,选择排序
/*
规律:第一圈0角标位上的值依次和后面的元素比较,第一圈结束时最小值出现在最左边;比较的次数数数组的长度-1(按照正序排列)
第二圈1角标位上的值依次和后面元素比较,第二圈结束时,第二小的元素出现在1角标位置上。
。。。。。。
代码实现:
*/
package com.itheima.sh.demo;
public class SelectSortDemo {
public static void main(String[] args) {
// 定义一个整形数组、
int [] arr = {9,6,4,1,8,7};
System.out.println("排序之前:");
printArray(arr);
selectSort(arr);
System.out.println("排序之后:");
printArray(arr);
}
//定义功能
public static void selectSort(int []arr){
for (int i = 0; i < arr.length; i++) {
//j =i+1保证每次循环开始,第一个元素都会和下一个元素比较,而不是和自己比较
for (int j =i+ 1; j < arr.length; j++) {
if (arr>arr[j]) {
int temp =arr;
arr = arr[j];
arr[j] = temp;
}
}
}
}
//定义打印功能
public static void printArray(int [] arr){
for(int i =0;i<=arr.length-1;i++){
System.out.print("arr["+i+"]="+arr+"\t");
}
System.out.println();
}
}
|