Java四种遍历,用最简单的面向过程实现。
一、冒泡排序
for (int i = 0; i < A.length; i++) {
//第二层循环为什么是(A.length -i -1)
// 减i是:每趟都忽略已经排好
// 减1是:每次一趟的每一次到最后一个元素了
for (int j = 0; j < A.length -i - 1 ; j++) {
//比较i和j+1
//例如有:[3,2,5,4,...] 现在遍历到第1个了,A[j]=3; A[j+1]=2
if(A[j] > A[j+1]){// 3 > 2 符合要求,则进入交换
int temp = A[j]; //定义一个临时变量,用于交换数据
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
二、选择排序
for (var i = 0; i < arr.length; i++) {
var min = arr[i];
var index = i;
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] < min) {
min = arr[j];
index = j;
}
}
if (index != i) {
var temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
三、插入排序
for(int i=1;i<arr.length;i++) {
int temp=arr[i];
for(int j=i-1;j>=0;j--) {
if(arr[j+1]<arr[j]) {
arr[j+1]=arr[j];
arr[j]=temp;
}
}
System.out.println(Arrays.toString(arr));
}
四、希尔排序
for(int a=arr.length/2;a>0;a/=2) {
for(int i=a;i<arr.length;i++) {
for(int j=i;j>=a;j-=a) {
if(arr[j]<arr[j-a]) {
int temp=arr[j-a];
arr[j-a]=arr[j];
arr[j]=temp;
}
}
System.out.println(Arrays.toString(arr));
}
}