小标
2018-12-05
来源 :
阅读 1076
评论 0
摘要:本文主要向大家介绍了【云计算】6种排序算法java实现解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】6种排序算法java实现解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
6种排序算法
冒泡排序 选择排序 插入排序 计数排序 快速排序 归并排序
1)冒泡排序
相邻的两个数字比较排序,先将最大的交换到最后面,然后重复。
代码实现
2)选择排序
从第一个位置开始,用某个位置依次与后边所有元素比较一遍,如果后面的某个位置的数比该位置的数小,就换一换位置。
3)插入排序
某个位置与前边所有元素比较, 这个位置的元素比前边元素小, 那么把这个位置的元素插入到比它大的那个元素的位置。
4)计数排序
Hbase 布隆过滤器 计数排序
利用数组的下标进行排序(要求理解原理)
代码实现
public class JiShuPaiXu {
public static void main(String[] args) {
int[] arr = {2,1,4,7,2,8,1,5,1};
jisupaicu(arr);
}
public static void jisupaicu(int[] arr){
int max = arr[0];
for(int i =1;imax){
max=arr[i];
}
}
int[] newArr = new int[max+1];
for(int i = 0;i5)快速排序时间复杂度nlogn1、原理: 对数组排序 先选取一个基准点,作用:基准点左侧小于基准点的数据,基准点右侧大于基准点的数据 基准点:最常用的基准点选第一个 一个大数组不停的进行拆分 拆分的最终结果每个数组只有一个元素代码实现public class QuickSort {
public static void main(String[] args) {
int[] arr={1,34,2,5,6,7,8,9,0,10,2,3,4,5};
sort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
//参数
//出口
/**
*
* @param arr
* @param left 左侧的元素下标位置
* @param right 右侧元素的下标
* 运行的条件 leftright){
return;
}
//符合递归的逻辑的
//拆分 大数组 按照我们的规则拆分
//关键找基准点
int point=getIndexPoint(arr,left,right);
//进行递归回调
//先对左侧数组进行回调
sort(arr,left,point-1);
//对右侧的数组进行回调
sort(arr,point+1,right);
}
//为每一个数组找基准点
private static int getIndexPoint(int[] arr, int left, int right) {
//指定初始的基准点
int key=arr[left];
while(left=key&&left6)归并排序:时间复杂度nlogn2路归并排序做的是两个有序集合的排序便于理解 拿两个有序的数组进行排序前提:两个数据集都是已经排好序的。只有一个数据集。这个数据集是排好序的对一个大的数据集进行排序 将大的数据集分成多个小的数据集 这里的多个小的数据集是排好序的归并排序进行拆分的时候 拆分的小数据集每个数据集中只有一个元素归:拆分的过程并:将两两个数据集进行汇笼排序。Merge(文件归并)代码实现:public class MergeSort01 {
public static void sort(int[] arr1,int[] arr2){
//记录两个数组的下标变化
int m=0;
int n=0;
int index=0;
//两个变量记录最大的下标
int x=arr1.length-1;
int y=arr2.length-1;
//创建一个新的数组 作用:盛放最终的结果
int[] newarr=new int[arr1.length+arr2.length];
//循环遍历比较 while循环不能确定循环次数
while(m<=x && n<=y){
if(arr1[m]=arr2[n]
newarr[index++]=arr2[n++];
}
}
while(m<=x){
newarr[index++]=arr1[m++];
}
while(n<=y){
newarr[index++]=arr2[n++];
}
for(int i:newarr){
System.out.print(i+" ");
}
}
public static void main(String[] args) {
int[] arr1={1,2,4,6,7};
int[] arr2={2,3,5,7,8,9,12,14};
sort(arr1, arr2);
}
}
实例一:归并排序public class MergeSortFinal {
public static void main(String[] args) {
int[] arr={3,1,2,5,7,5,3,8,7,6,4,8,9,34,56,78,23,12,11};
int[] newarr=new int[arr.length];
chai(arr,0,arr.length-1,newarr);
System.out.println(Arrays.toString(arr));
}
//拆分 递归
public static void chai(int[] arr,int left,int right,int[] newarr){
if(left>=right){
return;
}else{
int mid=(left+right)/2; //计算中间值
//递归调用
//左半部分
chai(arr, left, mid,newarr);//边界
chai(arr,mid+1,right,newarr);//这句代码执行完,整个拆的过程完成
//并
mergeResult(arr, left, right, mid, newarr);
}
}
//并 merge文件归并
public static void mergeResult(int[] arr,int left,int right,int mid,int[] newarr){
//定义;两个变量 记录数据集的左侧的边界
int m=left;
int n=mid+1;
//定义两个变量 记录每个数据集的右侧的边界
int x=mid;
int y=right;
//定义一个变量 记录新数组的下标的
int index=0;
while(m<=x&&n<=y){
if(arr[m]=arr[mid+1]
newarr[index++]=arr[n++];;
}
}
while(m<=x){
newarr[index++]=arr[m++];
}
while(n<=y){
newarr[index++]=arr[n++];
}
for(int i=0;i
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号