先弄个链接过来,里面的图片很重要:https://blog.csdn.net/yuanyi0501/article/details/78798626
冒泡排序: 相邻依次比较,最大放最后。
private static void bubbleSort(int[] arr) {
if(arr==null || arr.length < 2 ){
return;
}
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i -1; j++) { // 这里说明为什么需要-1
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
选择排序:依次取前面的元素和后面的每一个比较,最小放最前。
public class xuanzepaixu {
public static void main(String[] args) {
int[] arr={43,2,5,4,3,32,1};
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]>arr[j]){
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
希尔排序:具有步长概念,拿后面和前面比,跨度为步长。
public class Xierpaixu {
public static void main(String[] args) {
int[] arr={43,2,5,4,3,32};
int h=arr.length;
while(h>=1){
h=h/2;
for (int i = h; i < arr.length; i++) {
for (int j = i; j >=h; j-=h) {
if(arr[j]<arr[j-h]){
int temp=arr[j-h];
arr[j-h]=arr[j];
arr[j]=temp;
}else{
break;
}
}
}
System.out.println(Arrays.toString(arr));
}
快速排序:递归思想。从右边开始,右边找小的,左边找大的。调换。递归。
public class kuaisupaixu {
static int[] arr={43,2,5,4,3,32,1};
public static void quickSort(int left,int right){
int i,j,t,temp;
if(left>right){
return;
}
i=left;
j=right;
temp=arr[left];
while(i!=j){
while(arr[j]>=temp&&i<j)
j--;
while(arr[i]<=temp&&i<j)
i++;
if(i<j){
t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
}
//将基数调换
arr[left]=arr[i];
arr[i]=temp;
quickSort(left, i-1);
quickSort(i+1, right);
}
public static void main(String[] args) {
quickSort(0, arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
归并排序:创建新数组,长度两相和。依次做比较,放入时加加。比后有剩余,如法搬移之。
package cn.test;
import java.util.Arrays;
//将两个有序数组排成一个有序数组
public class GuiBingTest {
public static void main(String[] args) {
int[] a={1,2,3,4,5};
int[] b={10,4,5,6,7};
int[] c=new int[a.length+b.length];
int ai=0;
int bi=0;
int ci=0;
while(ai<a.length&&bi<b.length){
if(a[ai]<b[bi]){
c[ci++]=a[ai++];
}else{
c[ci++]=b[bi++];
}
}
while(ai<a.length) c[ci++]=a[ai++];
while(bi<b.length) c[ci++]=b[bi++];
System.out.println(Arrays.toString(c));
}
}