当前位置: 首页 > news >正文

网站首页html代码的标签网站建设公司-信科网络

网站首页html代码的标签,网站建设公司-信科网络,百度官网网站,软件工程是工学还是理学查找元素索引位置基本查找根据数组元素找出该元素第一次在数组中出现的索引public class TestArray1 {public static void main(String[] args) {//定义一个数组int[] arr{10,20,70,10,90,100,1,2};//根据元素查找出该元素在数组中第一次出现的索引int indexgetIndexByEle(arr,…查找元素索引位置基本查找根据数组元素找出该元素第一次在数组中出现的索引public class TestArray1 {public static void main(String[] args) {//定义一个数组int[] arr{10,20,70,10,90,100,1,2};//根据元素查找出该元素在数组中第一次出现的索引int indexgetIndexByEle(arr,2);System.out.println(该元素第一次在数组中出现的索引是index);}private static int getIndexByEle(int[] arr, int ele) {//遍历数组去查找for (int i 0; i arr.length; i) {if (elearr[i]){return i;}}return -1;//如果我们没有找到这个元素那么就返回-1}}案例中查找元素2的索引索引为7运行后返回结果正确二分查找使用二分查找查找出该元素在数组中第一次出现的索引前提该数组的元素必须有序思想每一次都查找中间的元素比较大小就能减少一半的元素具体代码实现public class TestArray2 {public static void main(String[] args) {//二分查找前提是数组元素必须有序int[] arr{10,20,30,40,50,60,70,80,90};int indexgetIndexByEle(arr,40);System.out.println(该元素的索引是index);}private static int getIndexByEle(int[] arr, int ele) {//定义最小索引中间索引最大索引int minIndex0;int maxIndexarr.length-1;int centerIndex(minIndexmaxIndex)/2;while (minIndexmaxIndex){//如果需查找元素等于中间索引所对应元素返回中间元素表示找到if (elearr[centerIndex]){return centerIndex;}//如果需查找元素大于中间索引所对应元素移动最小索引至中间索引处else if (elearr[centerIndex]){minIndexcenterIndex1;}//如果需查找元素小于中间索引所对应元素移动最大索引至中间索引处else if (elemaxIndexcenterIndex-1;}//重新计算中间索索引centerIndex(minIndexmaxIndex)/2;}return -1;//如果没有找到就返回-1}}案例中查找元素为40索引为3运行后返回结果正确八大排序方法冒泡排序原理数组元素两两比较交换位置大元素往后放经过一轮比较后最大的元素就会被排到数组的最后图解代码部分先进行第一轮排序看看效果public class ArraySort1 {public static void main(String[] args) {//原理数组元素两两比较前面元素大于后面元素则交换否则不交换每经过一轮最大的元素会排到最后int[] arr{24,69,80,57,13};//第一轮比较,遍历数组for (int i 0; i arr.length-1; i) {//从从第0个元素开始前一个元素与后一个元素比较if (arr[i]arr[i1]){//满足条件则交换位置利用temp中间变量寄存元素int temparr[i];arr[i]arr[i1];arr[i1]temp;}}//输出数组System.out.println(Arrays.toString(arr));}}下面进行多轮排序代码部分笨方法多次for循环比较繁琐重复循环语句没营养看看就好主要是得能想到为嵌套循环做准备public class ArraySort1 {public static void main(String[] args) {//原理数组元素两两比较前面元素大于后面元素则交换否则不交换每经过一轮最大的元素会排到最后int[] arr{24,69,80,57,13};//第一轮比较,遍历数组for (int i 0; i arr.length-1; i) {//从从第0个元素开始前一个元素与后一个元素比较if (arr[i]arr[i1]){//满足条件则交换位置利用temp中间变量寄存元素int temparr[i];arr[i]arr[i1];arr[i1]temp;}}//输出数组System.out.println(Arrays.toString(arr));//第二轮比较,遍历数组for (int i 0; i arr.length-1-1; i) {if (arr[i]arr[i1]){int temparr[i];arr[i]arr[i1];arr[i1]temp;}}//输出数组System.out.println(Arrays.toString(arr));//第三轮比较,遍历数组for (int i 0; i arr.length-1-1-1; i) {if (arr[i]arr[i1]){int temparr[i];arr[i]arr[i1];arr[i1]temp;}}//输出数组System.out.println(Arrays.toString(arr));//第四轮比较,遍历数组for (int i 0; i arr.length-1-1-1-1; i) {if (arr[i]arr[i1]){int temparr[i];arr[i]arr[i1];arr[i1]temp;}}//输出数组System.out.println(Arrays.toString(arr));}}使用嵌套循环(语句精简没有废话)public class ArraySort1 {public static void main(String[] args) {//原理数组元素两两比较前面元素大于后面元素则交换否则不交换每经过一轮最大的元素会排到最后int[] arr{24,69,80,57,13};//嵌套for循环外层循环轮数内层对每一轮内元素进行比较for (int i 0; i arr.length - 1; i) {for (int j 0; j arr.length-1-i; j) {if (arr[j]arr[j1]){//交换位置int temparr[j];arr[j]arr[j1];arr[j1]temp;}}}System.out.println(Arrays.toString(arr));}冒泡排序就介绍到这里~~~选择排序原理从0索引处开始依次和后面的元素进行比较小的元素往前放经过一轮比较后最小的元素就会出现在最小索引处图解代码部分多轮排序(优化前)public class ArraySort2 {public static void main(String[] args) {//原理从0索引处开始依次个后面的元素进行比较小的元素往前放经过一轮比较最小的元素就出现在最小索引处int[] arr{24,69,80,57,13};//第一轮比较从0索引处开始比int index0;for (int i 1; i arr.length; i) {if (arr[index]arr[i]){int temparr[index];arr[index]arr[i];arr[i]temp;}}System.out.println(Arrays.toString(arr));//第二轮index1;for (int i 1index; i arr.length; i) {if (arr[index]arr[i]){int temparr[index];arr[index]arr[i];arr[i]temp;}}System.out.println(Arrays.toString(arr));//第三轮index2;for (int i 1index; i arr.length; i) {if (arr[index]arr[i]){int temparr[index];arr[index]arr[i];arr[i]temp;}}System.out.println(Arrays.toString(arr));//第四轮index3;for (int i 1index; i arr.length; i) {if (arr[index]arr[i]){int temparr[index];arr[index]arr[i];arr[i]temp;}}System.out.println(Arrays.toString(arr));}}优化代码嵌套循环public class ArraySort2 {public static void main(String[] args) {//原理从0索引处开始依次个后面的元素进行比较小的元素往前放经过一轮比较最小的元素就出现在最小索引处int[] arr{24,69,80,57,13};//第一轮比较从0索引处开始比for (int index 0; index arr.length-1; index) {for (int i 1index; i arr.length; i) {if (arr[index]arr[i]){int temparr[index];arr[index]arr[i];arr[i]temp;}}}System.out.println(Arrays.toString(arr));}选择排序就介绍到这里~~~直接插入排序原理从1索引处开始将后面的元素与前一位比小于前一位则交换再与前一位比如果小于再交换如此循环插入之前的有序列表中使之仍保持有序(方法1)代码实现public class ArraySort3 {public static void main(String[] args) {//直接插入排序从1索引处开始将后面的元素插入之前的有序列表中使之仍保持有序int[] arr{3,2,1,0,10,20,30,7,8};//外层循环定义轮次for (int i 1; i arr.length; i) {//内层循环进行比较插入int ji;while (j0 arr[j]int temparr[j];arr[j]arr[j-1];arr[j-1]temp;j--;}}System.out.println(Arrays.toString(arr));}}(方法2)代码实现public class ArraySort3 {public static void main(String[] args) {//直接插入排序从1索引处开始将后面的元素插入之前的有序列表中使之仍保持有序int[] arr{3,2,1,0,10,20,30,7,8};//外层循环定义轮次for (int i 0; i arr.length; i) {for (int j i; j 0 ; j--) {if (arr[j]int temparr[j];arr[j]arr[j-1];arr[j-1]temp;}}}System.out.println(Arrays.toString(arr));}由于很多地方需要使用前后元素值交换因此封装成一个方法代码如下public static void swapValue(int[] arr,int i,int j){int temparr[i];arr[i]arr[j];arr[j]temp;}使用自己封装的方法for (int i 0; i arr.length; i) {for (int j i; j 0 ; j--) {if (arr[j]/*int temparr[j];arr[j]arr[j-1];arr[j-1]temp;*///直接调用交换方法封装思想swapValue(arr,j,j-1);}}}直接插入排序就介绍到这里~~~希尔排序希尔排序又称缩小增量排序基本思想先将原表按增量ht分组每个子文件按照直接插入法排序。同样用下一个增量ht/2将文件再分为自问见在直接插入法排序。直到ht1时整个文件排好序。关键选择合适的增量。希尔排序算法9-3可以通过三重循环来实现。图示将数组按步长为5的间隔两两分为一组每组两个元素进行比较大小小的放置于前面大的放置于后面由此排序一次后大致可以将整个数组中较小的元素放在前面较大的放在后面。下面数组长度为8第一次间隔取4第二次间隔取2第三次间隔取1具体实现见下图代码实现(使用克努特序列合理选择增量)public class ArraySort4 {public static void main(String[] args) {//希尔排序对插入排序的优化核心思想就是合理的选取增量经过一轮排序后就会让序列大致有序//然后不断的缩小增量进行插入排序直到增量为1整个排序结束//直接插入排序其实就是增量为1的希尔排序int[] arr{46,55,13,43,17,94,5,70,11,25,110,234,1,3,66};shellSort(arr);System.out.println(Arrays.toString(arr));}private static void shellSort(int[] arr) {//定义一个增量/*//第一轮int h4;for (int i h; i arr.length; i) {for (int j i; j h-1 ; j-h) {if (arr[j]swapValue(arr,j,j-h);}}}//第二轮h2;for (int i h; i arr.length; i) {for (int j i; j h-1 ; j-h) {if (arr[j]swapValue(arr,j,j-h);}}}//第三轮h1;for (int i h; i arr.length; i) {for (int j i; j h-1 ; j-h) {if (arr[j]swapValue(arr,j,j-h);}}}*///希尔排序核心代码//希尔排序的思想合理的选取增量//第一次增量可以选取数组长度的一半然后不断的减半/*for (int h arr.length / 2; h 0; h / 2) {for (int i h; i arr.length; i) {for (int j i; j h - 1; j - h) {if (arr[j] arr[j - h]) {swapValue(arr, j, j - h);}}}}*///增量的选取选择数组长度的一半还不是很合理我们可以使用一种序列叫做克努特序列//int h 1;//h h * 3 1; //1,4,13,40,121,364//根据克努特序列选取我们的第一次增量int jiange 1;while (jiange arr.length / 3) {jiange jiange * 3 1;}for (int h jiange; h 0; h (h - 1) / 3) {for (int i h; i arr.length; i) {for (int j i; j h - 1; j - h) {if (arr[j] arr[j - h]) {swapValue(arr, j, j - h);}}}}}//封装元素交换方法public static void swapValue(int[] arr,int i,int j){int temparr[i];arr[i]arr[j];arr[j]temp;}}希尔排序就介绍到这里~~~快速排序原理分治法比大小再分区从数组中取出一个数作为基准数分区将比这个数大或等于的书全放到他的右边小于他的数全放到他的左边。再对左右区间重复第二步直到各区间只有一个数。实现思路将基准数挖出形成第一个坑由后向前找比它小的数找到后挖出此数填到前一个坑中由前向后找比它大或等于的数找到后也挖出此数填到前一个坑中。再重复执行上述两步骤代码实现public class ArraySort5 {public static void main(String[] args) {//定义一个数组int[] arr{10,3,34,45,11,35,255,4,-1,-9,79,123};quickSort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}//快速排序public static void quickSort(int[] arr,int start,int end) {//找出分左右两区的索引位置然后对左右两区进行递归调用if (startint indexgetIndex(arr,start,end);quickSort(arr,start,index-1);quickSort(arr,index1,end);}}//将基准数挖出形成第一个坑//由后向前找比它小的数找到后挖出此数填到前一个坑中//由前向后找比它大或等于的数找到后也挖出此数填到前一个坑中。//再重复执行上述两步骤private static int getIndex(int[] arr, int start, int end) {int istart;int jend;int xarr[i];while (i//由后向前找比它小的数找到后挖出此数填到前一个坑中while (ix){j--;}if (iarr[i]arr[j];i;}//由前向后找比它大或等于的数找到后也挖出此数填到前一个坑中。while (ii;}if (iarr[j]arr[i];j--;}}arr[i]x;//把基准数填到最后一个坑return i;}}快速排序就介绍到这里~~~归并排序归并排序(Merge Sort)就是利用归并的思想实现排序的方法原理假设初始序列有N个记录则可以看成是N个有序的子序列每个子序列的长度为1然后两两归并得到N/2个长度为2或1的有序子序列再两两归并。。。如此重复直至得到一个长度为N的有序序列为止这种排序方法称为2路归并排序代码实现public class ArraySort6 {public static void main(String[] args) {//原始待排序数组int[] arr{10,23,1,43,0,-3,1121,343,44,11,56,78,3,-1};//我们先给一个左右两边是有序的一个数组先来进行归并操作//int[] arr{4,5,7,8,1,2,3,6};//拆分chaifen(arr,0,arr.length-1);//归并guiBing(arr,0,3,arr.length-1);//输出原数组System.out.println(Arrays.toString(arr));}private static void chaifen(int[] arr, int startIndex, int endIndex) {//计算中间索引int centerIndex(startIndexendIndex)/2;if (startIndexchaifen(arr,startIndex,centerIndex);chaifen(arr,centerIndex1,endIndex);guiBing(arr,startIndex,centerIndex,endIndex);}}private static void guiBing(int[] arr, int startIndex, int centerIndex, int enIndex) {//定义一个临时数组int[] tempArrnew int[enIndex-startIndex1];//定义左边数组的起始索引int istartIndex;//定义右边数组的起始索引int jcenterIndex1;//定义临时数组的起始索引int index0;while (icenterIndex jenIndex){if (arr[i]arr[j]){tempArr[index]arr[i];i;}else{tempArr[index]arr[j];j;}index;}//处理剩余元素while (icenterIndex){tempArr[index]arr[i];i;index;}while (jenIndex){tempArr[index]arr[j];j;index;}//将临时数组中的元素取到原数组中for (int k 0; k tempArr.length; k) {arr[kstartIndex]tempArr[k];}}}归并排序就介绍到这里~~~基数排序基数排序不同于之前的各类排序前面的排序或多或少通过使用比较和移动记录来实现排序而基数排序的实现不需要进行对关键字的比较只需要对关键字进行“分配”与“收集”两种操作即可完成下面通过图来解释第一次排序按照个位进行分组分组后结果再将元素逐一取出第二次排序根据十位上的数进行排序再依次将元素取出第三轮排序根据百位上的数进行排序最后将所有元素取出代码实现public class ArraySort7 {public static void main(String[] args) {//基数排序通过分配再收集的方式进行排序int[] arr{2,0,1,5,21,31,224,355,22,41,67,23,444,789,12,55,34,75};//确定排序轮次//获取数组中的最大值int maxgetMax(arr);//基数排序sortArray(arr);//输出排序后的数组System.out.println(Arrays.toString(arr));}private static void sortArray(int[] arr) {//定义二维数组放10个桶int[][] tempArrnew int[10][arr.length];//定义统计数组int[] countsnew int[10];int maxgetMax(arr);int lenString.valueOf(max).length();//循环轮次for (int i 0,n1; i len; i,n*10) {for (int j 0; j arr.length; j) {//获取每个位上的数字int ysarr[j]/n%10;tempArr[ys][counts[ys]]arr[j];}//取出桶中的元素int index0;for (int k 0; k counts.length; k) {if (counts[k]!0){for (int h 0; h counts[k]; h) {//从桶中取出元素放回原数组arr[index]tempArr[k][h];index;}counts[k]0;//清除上一次统计的个数}}}}private static int getMax(int[] arr) {int maxarr[0];for (int i 0; i arr.length; i) {if (arr[i]max){maxarr[i];}}return max;}}基数排序就介绍到这里~~~堆排序堆排序是利用堆这种数据结构而设计的一种排序算法堆排序是一种选择排序将待排序序列构造成一个大顶堆此时整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换此时末尾就为最大值然后将剩余n-1个元素重新构造成一个堆这样就会得到n个元素的次小值如此反复的执行便能得到一个有序序列了代码实现public class ArraySort8 {public static void main(String[] args) {//定义一个数组int[] arr{1,0,6,7,2,3,4,5,8,9,10,52,12,33};//调整成大顶堆的方法//定义开始调整的位置int startIndex(arr.length-1)/2;//循环开始调for (int i startIndex; i 0 ; i--) {toMaxHeap(arr,arr.length,i);}//System.out.println(Arrays.toString(arr));//经过上面的操作后已经把数组变成一个大顶堆把根元素和最后一个元素进行调换for (int i arr.length-1; i 0; i--) {//进行调换int temparr[0];arr[0]arr[i];arr[i]temp;//换完之后我们再把剩余元素调成大顶堆toMaxHeap(arr,i,0);}System.out.println(Arrays.toString(arr));}/**** param arr 要排序的数组* param size 调整的元素个数* param index 从哪里开始调整*/private static void toMaxHeap(int[] arr, int size, int index) {//获取左右字节的索引int leftNodeIndexindex*21;int rightNodeIndexindex*22;//查找最大节点所对应的索引int maxIndexindex;if (leftNodeIndexarr[maxIndex]){maxIndexleftNodeIndex;}if(rightNodeIndexarr[maxIndex]){maxIndexrightNodeIndex;}//我们来调换位置if(maxIndex!index){int tarr[maxIndex];arr[maxIndex]arr[index];arr[index]t;//调换完之后可能会影响到下面的子树不是大顶堆我们还需要再次调换toMaxHeap(arr,size,maxIndex);}}}堆排序就介绍到这里~~~最后感谢你看到这里文章有什么不足还请指正觉得文章对你有帮助的话记得给我点个赞每天都会分享java相关技术文章或行业资讯欢迎大家关注和转发文章
http://www.sadfv.cn/news/94711/

相关文章:

  • 哈尔滨建站模板搭建阳江哪里做网站
  • 网站索引量突然下降长沙企业网站开发哪家专业
  • 网站布局用什么代码wordpress 版权
  • 怎么看网站什么时候做的成都比较好的设计公司
  • 好的h5制作网站模板下载wordpress主题卸载
  • 设计一个企业网站大概多少钱30天网站建设实录下载
  • a设计网站有哪些后端开发工程师前景
  • 东莞常平社保局电话网站推广优化平台
  • 设计网络网站建设做网站时怎么添加动态信息
  • 易企秀+旗下+网站建设网站服务器租用4t多少钱一年啊
  • 河南国安建设集团有限公司网站佛山网吧什么时候恢复营业
  • 企业门户网站需求php网站挂马
  • 重庆网站的推广方式东莞网络优化调查公司
  • 济南建设网站公司长春网络公司十大排名
  • 茶叶网站模板免费下载网站建设与运营课程
  • 本科 网站建设的基础教程主题巴巴WordPress主题后门
  • 广西住房和城乡建设门户网站青岛电子商务的网站建设
  • wordpress 咨询 主题seo全网营销公司
  • 哪个网站可以查当地建设项目利用网站新媒体宣传法治建设
  • 重庆工程建筑信息网濮阳网站优化公司哪家好
  • 中国网站开发排名计算机网络网站开发
  • 全屏网站怎么做北京建设执业网站
  • 哪个酒店网站做的好看的网站设计毕业设计任务书
  • 淮安做网站的有多少钱寿光人才网招聘网
  • 海尔集团网站建设莱芜市网站建设公司
  • 室内设计软件下载网站大全服务器上安装wordpress
  • 怎么做动漫照片下载网站手机网站设计欣赏网站
  • 网站建设需求分析调研表教育网站制作视频
  • 网站后台html模板代理网址域名
  • 海洋公园网站建设方案seo关键词推广多少钱