700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java的冒泡排序 快速排序 归并排序 计数排序 二分查找法

Java的冒泡排序 快速排序 归并排序 计数排序 二分查找法

时间:2019-09-03 08:04:26

相关推荐

Java的冒泡排序 快速排序 归并排序 计数排序 二分查找法

Java的冒泡排序,快速排序,归并排序,计数排序,二分查找法

文章内容

归并排序

冒泡排序

二分法查找

计数排序

快速排序

归并排序

package java_sort;import java.util.Arrays;//归并排序:将多个数据集合为一个数据集:此处以有序数据集为例public class MergeSort{public static void main(String[] args) {int[] arr1={1,2,3,5,6,8,10};int[] arr2={2,3,4,7,9,10,20,21,23,24};System.out.println(Arrays.toString(msort(arr1, arr2)));}//定义一个归并排序的方法public static int[] msort(int[] arr1,int[] arr2){//定义一个结果集:新数组int[] resarr=new int[arr1.length+arr2.length];//定义3个变量 分别记录3个数组的下标变化的int m=0;//arr1下标int n=0;//arr2下标int index=0;//resarr下标的//循环条件 只要两个数组中都有元素 就得比较//arr1有元素 m<=arr1.length-1//arr2有元素 n<=arr2.length-1 while|for//循环条件1:两个数组中都有元素while( m<=arr1.length-1 && n<=arr2.length-1){//比较 小的进最终数组if(arr1[m]<= arr2[n]){//小的给最终的新的数组赋值resarr[index++]=arr1[m++];/*index++;m++;*/}else{//arr1[m]> arr2[n]resarr[index++]=arr2[n++];}}//循环条件2:数组1还有元素:则将剩余元素全部放入新数组while(m<=arr1.length-1){resarr[index++]=arr1[m++];}//循环条件3:可能arr2while(n<=arr2.length-1){resarr[index++]=arr2[n++];}return resarr;} }//总结:归并排序:/*前提:多个数据集必须提前排好序!!!将多个数组合并到一个新建数组中,将小的值依次赋给新数组*/

冒泡排序

package java_sort;public class sort01 {//java增强排序---冒泡排序-升序排序public static void main(String[] args) {int[] ary=new int[]{23,2,434,5,64,2,1};/*规律://遍历数组进行排序:内外循环进行比较:外循环控制对比轮数:内循环控制和谁比:数组i开始依次和之后的书进行比较*/for(int i=0;i<ary.length-1;i++){for(int j=0;j<ary.length-1-i;j++){//选择排序仅仅是此处开始位置是i+1if(ary[j]>=ary[j+1]){//交换位置int num=ary[j];ary[j]=ary[j+1];ary[j+1]=num;//交换完毕}}}//遍历排序完毕数组for (int arry:ary){System.out.println(arry);}}}

package java_sort;public class sort02 {//二分查找法:利用二分查找在有序数组中查找某数字/*前提:该数组是升序排序的有序数组原理:在数组中查找某个数字:输出其在数组中的位置下标:*/public static void main(String[] args) {int[] arry=new int[]{1,2,5,7,8,9};int num=5;sort02.findsort(arry, num);}private static void findsort(int [] arry,int num){//利用二分查找在有序数组中查找某数字int low = 0;int high = arry.length - 1;int middle=(low+high)/2;//while循环查找:一直往数组中间靠while (low <= high) {//确定其在数组中的那一部分if (num == arry[middle]) {//将查找数字和数组中间数进行 比较break;//判断上限是} else if (num < arry[middle]) {//high = middle - 1;//判断下限} else{low = middle + 1;}}//若没有,则返回-1System.out.println(arry[middle]);}}

二分查找法

package java_sort;public class sort02 {//二分查找法:利用二分查找在有序数组中查找某数字/*前提:该数组是升序排序的有序数组原理:在数组中查找某个数字:输出其在数组中的位置下标:*/public static void main(String[] args) {int[] arry=new int[]{1,2,5,7,8,9};int num=5;sort02.findsort(arry, num);}private static void findsort(int [] arry,int num){//利用二分查找在有序数组中查找某数字int low = 0;int high = arry.length - 1;int middle=(low+high)/2;//while循环查找:一直往数组中间靠while (low <= high) {//确定其在数组中的那一部分if (num == arry[middle]) {//将查找数字和数组中间数进行 比较break;//判断上限是} else if (num < arry[middle]) {//high = middle - 1;//判断下限} else{low = middle + 1;}}//若没有,则返回-1System.out.println(arry[middle]);}}

快速排序

package java_sort;import java.util.Arrays;public class sort04 {public static void main(String[] args) {int[] arr={23,12,34,10,40,3};qsort(arr, 0, arr.length-1);System.out.println(Arrays.toString(arr));}//快速排序//1.定义一个递归方法,执行寻找界点的方法public static void qsort(int[] arr,int left,int right){//2.递归出口为:if(left>=right){return;}else{//递归执行规律//获取第一个分界点:第一个分界点为;后序所有分界点由下面方法获得;int index=getFinalIndex(arr, left, right);//得到方法中界点//分界点左侧qsort(arr, left, index-1);//分界点右侧qsort(arr, index+1, right);}}//获取每一轮的最终的分界点 :利用递归分别让界点两侧执行以下方法public static int getFinalIndex(int[] arr,int left,int right){//1.获取边界 key=2int key=arr[left];//2 3 15 8//0 1 2 3 4while(left<right){//大条件 外层循环一次//3,12,10,k,40,34//从右向左 循环遍历 数组的每一个元素 和key比较if(arr[right]>=key && left<right){//内层所有的right--;}else{//交换位置int num=0;num=arr[left];arr[left]=arr[right];arr[right]=num;}//从左向右 循环遍历每一个元素if(arr[left]<=key && left<right){left++;}else{//交换位置int num=0;num=arr[left];arr[left]=arr[right];arr[right]=num;}}//此时中界点寻找完毕:位置为 left 或者 right://新的界点值left==right:传入新数组arr[left]=key;return left;}}

mysql经典50道练习题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。