Java初级的排序算法——五种

第一种方法:Arrays.sort()

最为简单的方法就是Arrays.sort()的方法

使用时只要声明 "import java.util.Arrays;" 就可以了,然后在code中调用Arrays.sort() 这个方法就好。

下面是一段测试code:

import java.util.Scanner;
import java.util.Arrays;

public class sort_array {
	public static void main(String[] args) {
		//1.数组排序Arrays.sort();
		int[] a = {1,3,5,7,9,8,6,4,2};
		Arrays.sort(a);
		System.out.println(Arrays.toString(a));
		//[1, 2, 3, 4, 5, 6, 7, 8, 9]
	}
}

    emmmmmm插一句,在java中的sort排序,它的实质是双轴快排算法,

1.对于很小的数组(长度小于27),会使用插入排序。 
2.选择两个点P1,P2作为轴心,比如我们可以使用第一个元素和最后一个元素。 
3.P1必须比P2要小,否则将这两个元素交换,现在将整个数组分为四部分: 
(1)第一部分:比P1小的元素。 
(2)第二部分:比P1大但是比P2小的元素。 
(3)第三部分:比P2大的元素。 
(4)第四部分:尚未比较的部分。 
在开始比较前,除了轴点,其余元素几乎都在第四部分,直到比较完之后第四部分没有元素。 
4.从第四部分选出一个元素a[K],与两个轴心比较,然后放到第一二三部分中的一个。 
5.移动L,K,G指向。 
6.重复 4 5 步,直到第四部分没有元素。 
7.将P1与第一部分的最后一个元素交换。将P2与第三部分的第一个元素交换。 
8.递归的将第一二三部分排序。
emmmmmmm似乎是这么回事

第二种方法:冒泡排序(比较辣鸡)

简单来说,冒泡排序就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

int a[]= {23,48,12,56,45};
	int temp;
	for(int i=0;i<a.length;i++)
	{
		for(int j=i+1;j<a.length;j++)
		{
			if(a[i]>a[j])
			{
				temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
    }
}

code又长又没什么用,(慢!!!)

第三种方法:选择排序

int arr3[]= {23,12,48,56,45};
    for(int i=0;i<arr3.length;i++) {
		int tem=i;
                //将数组中从i开始的最小的元素所在位置的索引赋值给tem
		for(int j=i;j<arr3.length;j++) {
			if(arr3[j]<arr3[tem]) {
				tem=j;
			}
		}
		//上面获取了数组中从i开始的最小值的位置索引为tem,利用该索引将第i位上的元素与其进行交换
		int temp1=arr3[i];
		arr3[i]=arr3[tem];
		arr3[tem]=temp1;
}

第四种方法:反转排序

int []a={23,12,48,56,45};
	for(int i=0;i<a.length/2;i++) {
		int temp=a[i];
		a[i]=a[a.length-i-1];
		a[a.length-i-1]=temp;
	}

第五种方法:插入排序

int []arr5={23,12,48,56,45};
	for (int i = 1; i < arr5.length; i++) {
		for (int j = i; j > 0; j--) {
			if (arr5[j - 1] > arr5[j]) {//大的放后面
				int tmp = arr5[j - 1];
				arr5[j - 1] = arr5[j];
				arr5[j] = tmp;
			}
		}
}

 

 

posted @ 2022-09-17 20:50  金鳞踏雨  阅读(19)  评论(0编辑  收藏  举报  来源