欢迎来到天天文库
浏览记录
ID:38629503
大小:514.00 KB
页数:11页
时间:2019-06-16
《排序算法执行时间》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件121金凯1102052019算法10001000050000100000插入排序1.1ms49.9ms1387.4ms5692.6ms归并排序2.2ms103.2ms2742.2ms10630.9ms快速排序0.9ms30.5ms978.6ms5256.4ms随机化快排1.5ms28.6ms1020.0ms5230.5ms一、插入排序/***插入排序**@paramarray*/publicstaticint[]insertionSort(int[]array){inti,j;intinsertArg;//要插入的数据//从数组的第二个元素开始循环将数组中的元素插入for(i
2、=1;i=0&&insertArg3、并排序**@paramdata*/publicstaticint[]mergeSort(int[]arrays){sort(arrays,0,arrays.length-1);System.out.println(Arrays.toString(arrays));returnarrays;}publicstaticvoidsort(int[]data,intleft,intright){//判断左右两边的个数if(left>=right)return;//找出中间索引intcenter=(left+right)/2;//对左边数组进行递归sort(data,left,center)4、;//对右边数组进行递归sort(data,center+1,right);//合并merge(data,left,center,right);}/***将两个数组进行归并,归并前面2个数组已有序,归并后依然有序**@paramdata*数组对象*@paramleft*左数组的第一个元素的索引*@paramcenter*左数组的最后一个元素的索引,center+1是右数组第一个元素的索引*@paramright*右数组最后一个元素的索引*/publicstaticvoidmerge(int[]data,intleft,intcenter,intright){//临时数组int[]t5、mpArr=newint[data.length];//右数组第一个元素索引intmid=center+1;//third记录临时数组的索引intthird=left;//缓存左数组第一个元素的索引inttmp=left;while(left<=center&&mid<=right){//从两个数组中取出最小的放入临时数组if(data[left]<=data[mid]){tmpArr[third++]=data[left++];}else{tmpArr[third++]=data[mid++];}}//剩余部分依次放入临时数组(实际上两个while只会执行其中一个)while(m6、id<=right){tmpArr[third++]=data[mid++];}while(left<=center){tmpArr[third++]=data[left++];}//将临时数组中的内容拷贝回原数组中//(原left-right范围的内容被复制回原数组)while(tmp<=right){data[tmp]=tmpArr[tmp++];}}一、快速排序/***快速排序*@paramarrays*@return*/publicstaticint[]quickSort(int[]arrays){if(arrays.length>0){//查看数组是否为空_quickSo7、rt(arrays,0,arrays.length-1);}System.out.println(Arrays.toString(arrays));returnarrays;}publicstaticvoid_quickSort(int[]list,intlow,inthigh){if(low
3、并排序**@paramdata*/publicstaticint[]mergeSort(int[]arrays){sort(arrays,0,arrays.length-1);System.out.println(Arrays.toString(arrays));returnarrays;}publicstaticvoidsort(int[]data,intleft,intright){//判断左右两边的个数if(left>=right)return;//找出中间索引intcenter=(left+right)/2;//对左边数组进行递归sort(data,left,center)
4、;//对右边数组进行递归sort(data,center+1,right);//合并merge(data,left,center,right);}/***将两个数组进行归并,归并前面2个数组已有序,归并后依然有序**@paramdata*数组对象*@paramleft*左数组的第一个元素的索引*@paramcenter*左数组的最后一个元素的索引,center+1是右数组第一个元素的索引*@paramright*右数组最后一个元素的索引*/publicstaticvoidmerge(int[]data,intleft,intcenter,intright){//临时数组int[]t
5、mpArr=newint[data.length];//右数组第一个元素索引intmid=center+1;//third记录临时数组的索引intthird=left;//缓存左数组第一个元素的索引inttmp=left;while(left<=center&&mid<=right){//从两个数组中取出最小的放入临时数组if(data[left]<=data[mid]){tmpArr[third++]=data[left++];}else{tmpArr[third++]=data[mid++];}}//剩余部分依次放入临时数组(实际上两个while只会执行其中一个)while(m
6、id<=right){tmpArr[third++]=data[mid++];}while(left<=center){tmpArr[third++]=data[left++];}//将临时数组中的内容拷贝回原数组中//(原left-right范围的内容被复制回原数组)while(tmp<=right){data[tmp]=tmpArr[tmp++];}}一、快速排序/***快速排序*@paramarrays*@return*/publicstaticint[]quickSort(int[]arrays){if(arrays.length>0){//查看数组是否为空_quickSo
7、rt(arrays,0,arrays.length-1);}System.out.println(Arrays.toString(arrays));returnarrays;}publicstaticvoid_quickSort(int[]list,intlow,inthigh){if(low
此文档下载收益归作者所有