【云计算】6种排序算法java实现解析
小标 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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved