java如何实现排序,java快速排序的两种方法

  java如何实现排序,java快速排序的两种方法

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  学习视频分享:java视频教程

  普通插入:从数组的第二个元素进行操作,当发现其前面的元素比他大时,执行交换操作。

  static int[]insert sort(int[]array){

  int len=数组.长度

  for(int begin=1;开始低输入联网(low-entry networking的缩写)开始){

  int cur=begin

  while(cur 0 array[cur]array[cur-1]){

  int tmp=array[cur];

  数组[cur]=数组[cur-1];

  array[cur-1]=tmp;

  cur-;

  }

  }

  返回数组;

  }第一步优化:从数组的第二个元素进行操作,如果发现其前面的元素比他大,就将其前面的元素往后挪,直到cur指向的元素大于或者等于他前一个元素,此时cur指向的位置就是待插入元素应该插入的位置。

  静态int[] insertSort2(int[] array){

  int len=数组.长度

  for(int begin=1;开始低输入联网(low-entry networking的缩写)开始){

  int cur=begin

  int tmp=array[cur];

  while(cur 0 array[cur]array[cur-1]){

  数组[cur]=数组[cur-1];

  cur-;

  }

  array[cur]=tmp;

  }

  返回数组;

  }第二步优化

  第三种算法和第二种其实本质上是一样的,都是找待插入位置,挪动元素,只不过第三种算法通过二分查找减少了比较次数,即cmp函数的调用,还减少了swap函数的调用。更快的找到了当前元素应该插入的位置,然后再进行挪动,提高了效率。

  静态int[] insertSort3(int[] array){

  int len=数组.长度

  for(int begin=1;开始低输入联网(low-entry networking的缩写)开始){

  int v=array[begin];

  int insertIndex=search(array,begin);

  //将[插入索引,开始]范围内的元素往右边挪动一个单位

  for(int I=begin;我插入索引;我- ){

  array[I]=array[I-1];

  }

  array[插入索引]=v;

  }

  返回数组;

  }

  静态int search(int[] array,int index){

  int begin=0;

  int end=index

  while(begin end){

  int mid=(begin end)1;

  if (array[index] array[mid]){

  结束=中间

  }否则{

  begin=mid 1;

  }

  }

  返回开始;

  }需要注意的是:使用了二分搜索后,只是减少了比较次数,但插入排序的平均时间复杂度依然是O(n^2)

  将其中的挪动操作分离出来的效果:

  包com。mj。排序。CMP导入com。mj。排序。排序;公共类插入sort 3t扩展comparable t扩展SortT {

  //protected void sort(){//for(int begin=1;开始array . length begin){//T v=array[begin];//int insert index=search(begin);////将[插入索引,开始]范围内的元素往右边挪动一个单位for(int I=begin-1;I=insertIndexI-){ }//for(int I=begin;我插入索引;I-){//array[I]=array[I-1];//}//array[插入索引]=v;//}//}

  @覆盖

  受保护的空的排序(){

  for(int begin=1;开始数组.长度开始){

  insert(begin,search(begin));//元素索引给你,你告诉这个位置的元素往哪插

  }

  }

  /**

  * 将来源位置的元素插入到建筑环境及(同high-voltagealternatingcurrent)高压交互电流系统模拟的软件平台位置

  * @param源

  * @参数目标

  */

  私有空插入(int source,int dest) {

  t v=array[source];

  for(int I=source;我想我- ) {

  array[I]=array[I-1];

  }

  array[dest]=v;

  }

  /**

  * 利用二分搜索找到指数位置元素的待插入位置

  * 已经排好序数组的区间范围是[0,索引]

  * @param索引

  * @返回

  */

  私有(同Internationalorganizations)国际组织搜索(int索引){

  int begin=0;

  int end=index

  while (begin end) {

  int mid=(begin end)1;

  if (cmp(array[index],array[mid]) 0) {

  结束=中间

  }否则{

  begin=mid 1;

  }

  }

  返回开始;

  }}相关推荐:java入门教程以上就是爪哇岛实现插入排序后怎么进一步优化的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • java从文件中读取数据的六种方法是什么,java如何从文件中读取数据
  • java从文件中读取数据的六种方法是什么,java如何从文件中读取数据,java从文件中读取数据的六种方法
  • java 获取当前时间的三种方法是什么,java如何获取当前的时间
  • java 获取当前时间的三种方法是什么,java如何获取当前的时间,java 获取当前时间的三种方法
  • java 实体转map,实体对象转map,Java如何实现实体类转Map、Map转实体类
  • ,,Java如何基于wsimport调用wcf接口
  • javaarraylist用法,java如何遍历arraylist
  • java如何将两个数组合并为一个数组,合并数组算法
  • java如何编写函数,Java方法怎么写
  • java定位系统怎么做,java如何定位线上问题
  • Java如何打包为apk,java如何打包jar包_1
  • 如何判断char是不是空格,java如何判断字符是不是空格
  • java面向对象菜鸟教程,java如何面向对象
  • java如何换行输入,java输出语句中怎么换行
  • 顺时针打印二维数组java,java如何输出一个二维数组
  • 留言与评论(共有 条评论)
       
    验证码: