定义排序子序列Java,Java的8大排序的基本思想及实例解读

a[j+1]){ 8 temp=a[j]; 9 a[j]=a[j+1]; 10 a[j+1]=temp; 11 } 12 } 13 } 14 for(int i=0;i

6.快速排序

(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

(2)实例:

89750749_9

(3)用java实现

1 public class quickSort { 2 int a={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; 3 public quickSort{ 4 quick(a); 5 for(int i=0;i< high)="" {="" 11="" while="" (low="">< high="" &&="" list[high]="">= tmp) { 12 13 high--; 14 } 15 list[low] = list[high]; //比中轴小的记录移到低端 16 while (low < high="" &&="" list[low]=""><= tmp)="" {="" 17="" low++;="" 18="" }="" 19="" list[high]="list[low];" 比中轴大的记录移到高端="" 20="" }="" 21="" list[low]="tmp;" 中轴记录到尾="" 22="" return="" low;="" 返回中轴的位置="" 23="" }="" 24="" public="" void="" _quicksort(int="" list,="" int="" low,="" int="" high)="" {="" 25="" if="" (low="">=>< high)="" {="" 26="" int="" middle="getMiddle(list," low,="" high);="" 将list数组进行一分为二="" 27="" _quicksort(list,="" low,="" middle="" -="" 1);="" 对低字表进行递归排序="" 28="" _quicksort(list,="" middle="" +="" 1,="" high);="" 对高字表进行递归排序="" 29="" }="" 30="" }="" 31="" public="" void="" quick(int="" a2)="" {="" 32="" if="" (a2.length=""> 0) { //查看数组是否为空 33 _quickSort(a2, 0, a2.length - 1); 34 } 35 } 36 }

7、归并排序

(1)基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

(2)实例:

89750749_10

(3)用java实现

import java.util.Arrays; public class mergingSort { int a={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; public mergingSort{ sort(a,0,a.length-1); for(int i=0;iTODO Auto-generated method stub int tmpArr=new int[data.length]; int mid=center+1; //third记录中间数组的索引 int third=left; int tmp=left; while(left<><=right){ 从两个数组中取出最小的放入中间数组="">=right){><=data[mid]){ tmparr[third++]="data[left++];" }else{="" tmparr[third++]="data[mid++];" }="" }="" 剩余部分依次放入中间数组="">=data[mid]){><=right){ tmparr[third++]="data[mid++];" }="">=right){><=center){ tmparr[third++]="data[left++];" }="" 将中间数组中的内容复制回原数组="">=center){><=right){ data[tmp]="">=right){>tmp++]; } System.out.println(Arrays.toString(data)); } }

8、基数排序

(1)基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。

(2)实例:

89750749_11

(3)用java实现

1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class radixSort { 5 int a={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51}; 6 public radixSort{ 7 sort(a); 8 for(int i=0;ivoid sort(int array){ 12 13 //首先确定排序的趟数; 14 int max=array[0]; 15 for(int i=1;imax){ 17 max=array[i]; 18 } 19 } 20 21 int time=0; 22 //判断位数; 23 while(max>0){ 24 max/=10; 25 time++; 26 } 27 28 //建立10个队列; 29 Listqueue=new ArrayList; 30 for(int i=0;i<10;i++){ 31="">10;i++){>queue1=new ArrayList; 32 queue.add(queue1); 33 } 34 35 //进行time次分配和收集; 36 for(int i=0;iqueue2=queue.get(x); 43 queue2.add(array[j]); 44 queue.set(x, queue2); 45 } 46 int count=0;//元素计数器; 47 //收集队列元素; 48 for(int k=0;k<10;k++){ 49="" while(queue.get(k).size="">0){ 50 ArrayListqueue3=queue.get(k); 51 array[count]=queue3.get(0); 52 queue3.remove(0); 53 count++; 54 } 55 } 56 } 57 58 } 59 60 }

。学习Java的同学注意了!!!

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:392216227我们一起学Java!10;k++){>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值