import java.util.Arrays;
import java.util.Random;
public class randomizedQuickSort
{
private static void randomSort(int[] a,int p,int r)
{
if(p<r)
{
int q=randomizedPartition(a,p, r);
randomSort(a,p, q-1);
randomSort(a,q+1, r);
}
}
private static int randomizedPartition(int[] a,int p,int r)
{
return randomizedQuickSort.partion(a,p,r);
}
public static int partion(int[] a,int p,int r) //寻找基准
{
Random random = new Random();
int x = random.nextInt(r) % (r - p + 1) + p; //随机元素基准
System.out.println("随机选择的基准元素下标为"+x);
int i=p,j=r; //i,j为游标
while(true)
{
while(a[i]<x && i<j) //在左边找一个比基准大的元素a[i]
i++;
while(a[j]>x && j>=i) //在右边找一个比基准小的元素a[j]
j--;
if(i>=j) //如果i>=j,则不符合交换的条件
break;
quickSort.swap(a,i,j); //调用交换算法
}
return j; //返回基准的下标
}
public static void main(String[] args)
{
int a[]={8,4,3,7,1,5,6,2};
System.out.println("原数组:"+Arrays.toString(a));
randomizedQuickSort .randomSort(a,0,a.length-1); //调用排序方法
System.out.println("排序后的结果:"+Arrays.toString(a)); //输出排序结果
}
}
线性时间选择算法(附完整的代码,结合例题详细解析) 全套资源已打包好,求抱走!!!
版权申诉
5星 · 超过95%的资源 60 浏览量
2022-03-27
23:31:54
上传
评论 2
收藏 71KB RAR 举报
来玥方长
- 粉丝: 1w+
- 资源: 7
最新资源
- # 微信小程序-健康菜谱 基于微信小程序的一个查找检索菜谱的应用 ### 效果 !动态图(./res/gif/demo
- zabbix-get命令包资源
- 毕业设计,基于PyQt5实现的可视化界面的Python车牌自动识别系统源码
- 26-朴素贝叶斯分类.rar
- 没有安Matlab 也可以 生成FIR抽头系数工具.py
- python烟花代码.rar
- 实验目的: 1.构建基于verilog语言的组合逻辑电路和时序逻辑电路; 2.掌握verilog语言的电路设计技巧 3.完成如
- 扩展卡尔曼滤波matlab仿真
- 3_base.apk.1
- 躺赢者PRO飞控常见典型问题合集(续一)无名小哥 余义 20240501待修
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈