java中数组排序

种类:

普通排序、冒泡排序、选择排序、插入排序、java内置排序

1.冒泡排序:

将数组中相邻两个位置的数据实现对调获取最大值进行排序。

//冒泡排序
		int[] a= {1,22,32,12,44};
		//读取数组中的数据
		for(int j=0;j<a.length;j++) {
			for(int i=0;i<a.length-1;i++){
				//将相邻的两个数对调
				if(a[i]>a[i+1]) {
                    	int temp=a[i];
					a[i]=a[i+1];
					a[i+1]=temp;
				}
			}
		}
		//获取数组中的所有数据 Arrays.toString(数组名)
		System.out.println(Arrays.toString(a));

代码执行后的结果为:

[1, 12, 22, 32, 44]

2.Java内置排序:

Arrays.sort(数组名);//从小到大排序

//java内置排序
int[] a1= {1,22,32,12,44};
		Arrays.sort(a1);//调用java内置的排序方法实现排序
		System.out.println(Arrays.toString(a1));

代码执行后的结果为:

[2, 8, 55, 58, 69, 112]

3.选择排序

从待排序序列选择最小的元素与序列第1个元素交换;从剩下的元素中选择最小的缘续与序列第2个元素交换;依次类对直到最后一个元素。

public class 选择排序 {
	public static void main(String[] args) {
//		定义一个整形数组
		int []a= {2,66,98,55,1,4};
		xuanzepaixu(a);
//		输出排序后数组中的数组
		for(int i=0;i<a.length;i++) {
			System.out.println(a[i]);
		}
	}
	
	public static void xuanzepaixu(int []a) {
//		动态获取数组中的数据
		for(int i=0;i<a.length-1;i++) {
//			定义最小数下标
			int minindex=i;
			for(int j=i+1;j<a.length;j++) {
//				如果数组中有值小于minindex,就把它赋值给minindex
				if(a[j]<a[minindex]) {
					minindex=j;
				}
			}
//			如果遇到值比minindex大,就交换他们的值
			if(i !=minindex) {
				int temp=a[i];
				a[i]=a[minindex];
				a[minindex]=temp;
				
			}
			
		}
	}

}

代码执行后结果为:

1
2
4
55
66
98

4..插入排序

就是把待排序的数列分为了两部分,一部分已排好序,另一部分待排序;

插入排序的原理:

1.从第一个元素开始,该元素默认已经排好序

2.取出一个新的元素,将这个新元素在已经排好序的元素序列中从后向前进行比较

3.如果此时的元素大于新元素,就将这个元素放到下一个下标位置

4.如果此时的元素等于或者小于新元素,将新元素放在此时的元素后面

public class 插入排序 {
	public static void main(String[] args) {
//		定义一个整形数组
		int[] a= {15,888,55,7,4,1,58};
		System.out.println("数组排序前:");
		for(int i=0;i<a.length;i++) {
			System.out.print(a[i]+" ");
		}
		
		System.out.println();
//		调用插入排序的方法
		 charpaixu(a);
		 System.out.println("排序后:");
		 for(int i=0;i<a.length;i++) {
				System.out.print(a[i]+" ");
			}
	}
	
//	定义一个插入排序的方法
	public static void charpaixu(int [] a) {
//		定义已排序好的下标
		int j;
//		定义待排序的元素
		int y;
//		动态获取数组a的数据
		for(int i=1;i<a.length;i++) {
//			如果数组中前一个数大于后一个
			if(a[i-1]>a[i]) {
//				就把值赋值给待排序的元素
				y=a[i];
//				从后往前遍历,如果已经排序好的元素的值大于y,就把它后移
				for(j=i-1;j>=0&&a[j]>y;j--) {
					a[j+1]=a[j];
					
				}
//				把值赋值给y
				a[j+1]=y;
			}
		}
		
	}

}

代码执行后的结果为:

数组排序前:
15 888 55 7 4 1 58 
排序后:
1 4 7 15 55 58 888 
发布了52 篇原创文章 · 获赞 38 · 访问量 2518

猜你喜欢

转载自blog.csdn.net/weixin_44364444/article/details/104001423
今日推荐