首页 / JAVA / Java 通用的各种排序方法
Java 通用的各种排序方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 通用的各种排序方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4172字,纯文字阅读大概需要6分钟。
内容图文
![Java 通用的各种排序方法](/upload/InfoBanner/zyjiaocheng/737/279937fe71bf47ae98fb12ac3a6c6fe2.jpg)
1.选择排序
选择排序就是对数组中的元素进行比较选择,然后直接放置在排序后的位置
代码:在主方法main中定义一个数组并设置值,然后调用selectSort方法并给它参数值然后执行。
在selectSort方法中写一个for循环,n为8表示的是数组中的总数,判断如果i<n-1,满足条件时执行下一个for循环,找出最小值的元素下标,第一遍j=i+1(1=0+1),满足j<n条件,然后比较赋值,最后输出每一次执行的结果。
public static void main(String[] args) {
int [] arr = {19,38,5,17,12,8,27,29};
selectSort(arr,arr.length);
}
public static void selectSort(int [] arr,int n){
for (int i = 0; i < n - 1; i++) {
int index = i;
int j;
// 找出最小值的元素下标
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[index]) {
index = j;
}
}
int tmp = arr[index];
arr[index] = arr[i];
arr[i] = tmp;
System.out.println(Arrays.toString(arr));
}
}
运行结果:
2.冒泡排序
冒泡排序一次只比较两个数字,并且这两个数字是相邻的。
代码:第一次比较首先比较第0位和第一位,并且将结果大的数字往后移动,也就是交换,如果两个数比较前一位小于后一位不进行交换。
public static void main(String[] arry){
int[] a = { 56, 15, 78, 97, 21, 34, 5, 11 };
for (int i = 0; i < a.length - 1; i++){//外层循环是排序的趟数
for (int j = 0; j < a.length - 1 - i; j++){//内层循环是当前趟数需要比较的次数
if (a[j] > a[j + 1]) {
int b = a[j];
a[j] = a[j + 1];
a[j + 1] = b;
}
}
}
System.out.println("冒泡排序(从小到大):");
for (int c : a) {
System.out.println(c);
}
}
运行结果:
3.插入排序
插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,然后直接插入相对的顺序中。
代码:public static void main(String[] args) {
int[] arr={56, 15, 78, 97, 21, 34, 5, 11 };
insertSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
private static void insertSort(int[] arr) {
int temp = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] < arr[i-1]) {
temp = arr[i];
int j = 0;
for (j = i - 1; j >= 0 && temp < arr[j]; j--) {
arr[j+1]=arr[j];
}
arr[j+1]=temp;
}
}
}
运行结果:
4.快速排序
快速排序,说白了就是给基准数据找其正确索引位置的过程.
代码:从待排序的记录序列中选取一个记录(通常第一个)作为基准元素(称为key)key=arr[left],left指向数列的最左部,right指向数据的最右部, key首先与arr[right]进行比较,如果arr[right]<key,则arr[left]=arr[right]将这个比key小的数放到左边去,如果arr[right]>key则我们只需要将right--,right--之后,再拿arr[right]与key进行比较,直到arr[right]<key交换元素为止,如果右边存在arr[right]<key的情况,将arr[left]=arr[right],接下来,将转向left端,拿arr[left ]与key进行比较,如果arr[left]>key,则将arr[right]=arr[left],如果arr[left]<key,则只需要将left++,然后再进行arr[left]与key的比较。重复循环这个过程最终得到一个有序的数列。
public static void main(String[] args) {
int arr[]= {56, 15, 78, 97, 21, 34, 5, 11};
System.out.println("排序前:"+Arrays.toString(arr));
quickSort(arr,0,arr.length-1);
System.out.println("排序后:"+Arrays.toString(arr));
}
public static void quickSort(int [] arr,int left,int right) {
int pivot=0;
if(left<right) {
pivot=partition(arr,left,right);
quickSort(arr,left,pivot-1);
quickSort(arr,pivot+1,right);
}
}
private static int partition(int[] arr,int left,int right) {
int key=arr[left];
while(left<right) {
while(left<right && arr[right]>=key) {
right--;
}
arr[left]=arr[right];
while(left<right && arr[left]<=key) {
left++;
}
arr[right]=arr[left];
}
arr[left]=key;
return left;
}
运行结果:
内容总结
以上是互联网集市为您收集整理的Java 通用的各种排序方法全部内容,希望文章能够帮你解决Java 通用的各种排序方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。