首先分析插序算法的原理:
举例:int [] ints = {0,1,3,4,9,3,2,3,5,1,0};
for循环进行遍历,判断相邻两个值得大小,如果前面的小于后面的,就开始进行阶循环。
即9,3时,也就是i循环

  for (int i = 1; i <= ints.length-1; i++) {if(ints[i]<ints[i-1]) {//此时进入阶循环  j}}

阶循环时,从0,1,。。。4,9,进行循环,判断其中j位上的值比i位上的值大的那一位。

  for (int i = 1; i <= ints.length-1; i++) {if(ints[i]<ints[i-1]) {//此时进入阶循环  jif(ints[j]>ints[i]) {}}

这时需要找到介于阶循环中的j ,j 位的值比i位的值大。
需要交换的是j位于i位;j与i位之间的需要后移。先后移即i-1 移到i,直到j+1 移到j+2;最后交换j与i位。

             for (int i = 1; i <= ints.length-1; i++) {if(ints[i]<ints[i-1]) {//当i位的值小于i-1位的值时,开始进行阶循环for (int j = 0; j <=i-1; j++) {//当j位的值大于i位的值时if(ints[j]>ints[i]) {int temp=ints[i];for (int k = i; k >=j; k--) {ints[k]=ints[k-1];}ints[j]=temp;}}}}

最后写成方法:

static int[] insertion(int[] ints) {for (int i = 1; i <= ints.length-1; i++) {if(ints[i]<ints[i-1]) {//当i位的值小于i-1位的值时,开始进行阶循环for (int j = 0; j <=i-1; j++) {//当j位的值大于i位的值时if(ints[j]>ints[i]) {int temp=ints[i];for (int k = i; k >=j; k--) {ints[k]=ints[k-1];}ints[j]=temp;}}}}return ints;}

还没有结束,检查方法中冗余的计算,发现可以中断一些后面没用的循环,不是i,也不是k,而是j.

static int[] insertion(int[] ints) {for (int i = 1; i <= ints.length-1; i++) {if(ints[i]<ints[i-1]) {//当i位的值小于i-1位的值时,开始进行阶循环for (int j = 0; j <=i-1; j++) {//当j位的值大于i位的值时if(ints[j]>ints[i]) {int temp=ints[i];for (int k = i; k >=j; k--) {ints[k]=ints[k-1];}ints[j]=temp;break;}}}}return ints;}

最后进一步优化,减少一步循环


static int[] insertion2(int[] ints) {for (int i = 1; i <= ints.length-1; i++) {for (int j = i; j >0; j--) {if(ints[j]<ints[j-1]) {int temp=ints[j-1];ints[j-1]=ints[j];ints[j]=temp;}}}return ints;}

算法题2 插序算法相关推荐

  1. 【常见笔试面试算法题12】动态规划算法案例分析

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 文章目录 1.暴力搜索方法 2.记忆搜索方法 3.动态规划方法 4. ...

  2. leetcode算法题--二叉树中序遍历迭代法

    原题链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/ 二叉树中序遍历迭代法,栈实现 vector<int> ...

  3. leetcode算法题--从先序遍历还原二叉树

    原题链接:https://leetcode-cn.com/problems/recover-a-tree-from-preorder-traversal/ 迭代 + 栈 TreeNode* recov ...

  4. 90 个名企笔试题和算法题

    名企笔试 名企笔试:美团2016招聘笔试(股票交易日) 名企笔试:搜狐2016招聘笔试题(扎金花) 名企笔试:凤凰网2015招聘(二分查找) 名企笔试:4399游戏校招笔试题(快速排序) 名企笔试:蘑 ...

  5. 目录:名企笔试 + 算法题

    名企笔试:美团2016招聘笔试(股票交易日) 名企笔试:搜狐2016招聘笔试题(扎金花) 名企笔试:凤凰网2015招聘(二分查找) 名企笔试:4399游戏校招笔试题(快速排序) 名企笔试:蘑菇街201 ...

  6. 搬:90 个名企笔试题和算法题

    名企笔试 名企笔试:美团2016招聘笔试(股票交易日) 名企笔试:搜狐2016招聘笔试题(扎金花) 名企笔试:凤凰网2015招聘(二分查找) 名企笔试:4399游戏校招笔试题(快速排序) 名企笔试:蘑 ...

  7. 字节跳动2021年4月面试算法题库

    本文汇总了牛客2021.4.1~2021.4.30 面经考到的Leetcode题目 最终的高频题榜单数据可以在CodeTop题库(https://codetop.cc)查询,支持按部门.岗位分类筛选. ...

  8. leetcode贪心算法题集锦(持续更新中)

    leetcode贪心算法题集锦 leetcode贪心算法题集锦(持续更新中).python 和C++编写. 文章目录 leetcode贪心算法题集锦 一.贪心算法 1.盛最多水的容器 2.买股票的最佳 ...

  9. 程序员面试需要刷力扣算法题吗

    这里写目录标题 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一些特征 1.2. 为什么要考查算法 1.3. 目前面试主要考查 3 类 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一 ...

最新文章

  1. runtime系统的Cello
  2. 如何利用离散Hopfield神经网络进行数字识别(2)
  3. 以前不知道的,现在知道了(微机原理)
  4. .NET特性:异步流
  5. ios移动输入框被软键盘遮挡
  6. 阿里云上测试服务器的搭建
  7. Python 初学者的最佳学习资源
  8. boost::gregorian模块实现日期相关的测试程序
  9. 【SSL】java keytool工具创建自己的(localhost)(JKS)证书库
  10. Java23种设计模式之概念篇
  11. KubeEdge 1.3.0 部署
  12. Python面向对象之结构与成员
  13. 智能锁行业安全分析报告
  14. 优酷ts转换mp4_下载腾讯视频并转成MP4
  15. VS2013 C++工程调试加断点不能停
  16. ListView 优化之 ViewHolder 复用机制
  17. 微软快捷键截图_如何在Microsoft Office的屏幕提示中显示快捷键
  18. Lee滤波和Refine-Lee滤波
  19. Pisces-ORM的思考与设计
  20. 内存的永久保存区内存溢出解决

热门文章

  1. 程序员每天少吃 能活120岁
  2. 7月送书中奖名单,快看!
  3. linux多线程冗余,Linux  下的路径冗余
  4. java接口自动化demo_第一个java 接口自动化程序
  5. python中iloc的详细用法_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)...
  6. 优化算法笔记|萤火虫算法理解及实现
  7. python-opencv图像处理之SIFT尺度不变特征变换
  8. P53:进化了8亿年的抑癌基因
  9. 送书 | 人类细胞图谱计划发起人Aviv Regev博士讲单细胞基因组学
  10. SIP系统怎么禁用?SIP系统完整性保护关闭方法(含M1)