排序

选择排序1:

public class SortDemo1 {public static void main(String[] args) {int []arr= {12,16,3,64,-5,64};for (int i = 0; i < arr.length-1; i++) {for (int j = i+1; j < arr.length; j++) {if(arr[i]>arr[j]) {int t=arr[i];arr[i]=arr[j];arr[j]=t;}}}System.out.println(Arrays.toString(arr));}
}

选择排序2: 提高效率的选择排序

改进的选择排序法,增加了两个变量,一个代表最小值,一个代表最小值的角标
减少了在堆中的换位次数。

public class SortDemo3 {public static void main(String[] args) {int []arr= {12,16,3,64,-5,69};for (int i = 0; i < arr.length-1; i++) {//定义两个变量,记住最小值和角标int num=arr[i];int index=i;for (int j = i+1; j < arr.length; j++) {if(num>arr[j]) {num=arr[j];index=j;}}//用记录的最小值角标所对应的值和当前数组值互换,减少换位次数if(i!=index){int t=arr[i];arr[i]=arr[index];arr[index]=t;}}System.out.println(Arrays.toString(arr));}
}

冒泡排序:

public class SortDemo2 {public static void main(String[] args) {int []arr= {12,16,3,64,-5,69};for (int i = 0; i < arr.length-1; i++) {for (int j = 0; j < arr.length-i-1; j++) {if(arr[j]>arr[j+1]) {int t=arr[j];arr[j]=arr[j+1];arr[j+1]=t;}}}System.out.println(Arrays.toString(arr));}
}

 二分法查找,使用前提必须要排序:

public class HalfSearch {public static void main(String[] args) {int arr[]= {12,16,19,64,65,69};int rs=getKey(arr,12);System.out.println(rs);}private static int getKey(int[] arr, int key) {int min=0;int max=arr.length-1;while(max>min){int mid=(min+max)>>1;if(arr[mid]>key) max=mid-1;else if(arr[mid]<key)min=mid+1;else return mid;}return -1;}
}

使用递归的二分法查找

/*** 使用递归的方式使用二分查找法*/
public class Test5 {public static void main(String[] args) {int arr[]= {12,16,19,64,65,69};int index=rank(12,arr);System.out.println(index);}public static int rank(int key,int[]a) {return rank(key, a,0,a.length-1);}private static int rank(int key, int[] a, int min, int max) {if(min>max)return -1;int mid=(min+max)>>1;if(key<a[mid])return rank(key, a, min, mid-1);else if(key>a[mid])return rank(key, a, mid+1, max);else return mid;}
}

面试题:
给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,
那么这个元素的存储角标如何获取。

public class TestHalfSerarch {public static void main(String[] args) {int arr[]= {12,16,19,64,65,69};int rs=getKey(arr,15);System.out.println(rs);}
private static int getKey(int[] arr, int key) {int min=0;int max=arr.length-1;int mid;while(max>min){mid=(min+max)>>1;if(arr[mid]>key) max=mid-1;else if(arr[mid]<key)min=mid+1;else return mid+1;}return min;}
}

进制转换

把一个十进制数变成十六进制数

public class ToHexDemo {public static void main(String[] args) {toHex(60);}private static void toHex(int num) {if(num==0) {System.out.println('0');return;}char[]chs= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char[]arrs= new char[8];int pos=arrs.length;while(num!=0){int temp=num&15;arrs[--pos]=chs[temp];num=num>>>4;}for (int i = pos; i < arrs.length; i++) {System.out.print(arrs[i]);}}
}

通用进制转换:

public class Tranfer {public static void main(String[] args) {toBinary(60);}//十进制-->>二进制public static void toBinary(int num) {tranfer(num, 1, 1);}//十进制-->>八进制public static void toOctal(int num) {tranfer(num, 7, 3);}//十进制-->>十六进制public static void toHex(int num) {tranfer(num, 15, 4);}//转换函数private static void tranfer(int num,int base,int offset) {if(num==0) {System.out.println('0');return;}char[]chs= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char[]arrs= new char[8];int pos=arrs.length;while(num!=0){int temp=num&base;arrs[--pos]=chs[temp];num=num>>>offset;}for (int i = pos; i < arrs.length; i++) {System.out.print(arrs[i]);}}
}

欧几里得算法计算最大公约数

public class Test1 {public static void main(String[] args) {int x,y;x=25;y=65;int t=gcd(x,y);System.out.println(t);}public static int gcd(int p, int q) {if(q==0)return p;      int r=p%q;return gcd(q, r);            }
}

判断一个数是否是素数(质数)

public class Test3 {public static void main(String[] args) {int N=6;boolean r=isPrime(N);System.out.println(r);}public static boolean isPrime(int N) {if(N<2)return false;for(int i=2;i*i<=N;i++) {if(N%i==0)return false;}return true;}
}

牛顿迭代法求平方根

public class Test4 {public static void main(String[] args) {double c=9.0;double t=mysqrt(c);System.out.println(t);}public static double mysqrt(double c) {if(c<0)return Double.NaN;double t=c;double err=1e-15;while(Math.abs((t-c/t))>err*t) {t=(t+c/t)/2.0;}return t;}
}

JSE基础---基础小算法相关推荐

  1. 直播 | 天津大学副教授张长青:多模态融合的基础问题及算法研究

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  2. 《人工智能基础》——线性回归算法推导

    @EnzoReventon <人工智能基础> <人工智能基础>--线性回归算法推导 前面我们通过讲线性回归相信大家已经理解了回归任务是做什么的,但是还不知道具体怎么做,就是说怎 ...

  3. 扔掉你的算法书!1小时零基础拿下贪心算法!(17道题+万字儿童级解析+数十张图解)

    前几天的文章中我写到了一些关于零基础学习回溯算法的一些步骤和细节,在刷题的过程中发现了很多贪心算法的题很有趣,于是今天他来了,准备了好17道题来供大家共同学习,并附上了十分详细的题解,与附带了注释的优 ...

  4. 基础夯实:基础数据结构与算法(二)

    基础夯实:基础数据结构与算法(二) 常见的10种算法 1.递归算法 例题1:计算n! 例题2:斐波那契数列 例题3:递归将整形数字转换为字符串 例题4:汉诺塔 例题5:猴子吃桃 例题6:N皇后问题 2 ...

  5. 算法基础:排序算法之冒泡排序

    算法基础:排序算法之冒泡排序 实现:数列有序排序 思想:已知一个数列,令数列中相邻的两个元素一一做比较,按照小大的顺序(或从大到小的顺序),如果前一个数比后一个数大(或后一个数比前一个数大),则互换( ...

  6. 《算法基础:打开算法之门》一1.5 拓展阅读

    本节书摘来自华章出版社<算法基础:打开算法之门>一书中的第1章,第1.5节,作者 [美]托马斯 H 科尔曼(Thomas H Cormen),更多章节内容可以访问云栖社区"华章 ...

  7. 阿里深资架构师整理的Java 基础知识小抄 赶紧收藏

    本篇算是 Java 的基础知识小抄吧,之所以说小抄是因为觉得涵盖不是很细很全,但是基本的内容都有,当然后头还会继续完善,只是不会再用笔记录了!按照现在的习惯,先附上一张思维导图: 1. 安装与环境配置 ...

  8. 局部配置和全局配置_06. 教你零基础搭建小程序(解读全局配置文件-tabBar字段)...

    自从开始在知乎上发教程后,发现一个事情啊, 大家对于我写的教程,都在偷偷地收藏~~ 但是, 却没有银点赞~ 知乎这个平台吧,点赞的分量比收藏更大, 这里也不是要赞(我知道自己还能做的更好), 只是希望 ...

  9. 【零基础微信小程序】基于百度大脑人像分割的证件照换底色小程序实战开发

    系列文章目录 [零基础微信小程序入门开发]小程序介绍及环境搭建 [零基础微信小程序入门开发]配置小程序 [零基础微信小程序入门开发]小程序框架一 [零基础微信小程序入门开发]小程序框架二 [零基础微信 ...

  10. 视频教程-5小时零基础入门小程序云开发-微信开发

    5小时零基础入门小程序云开发 码农一枚,非著名全栈开发人员.分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑. 多年全栈开发经验,擅长小程序,java,安卓,web前端开发. 邱石 ¥29.0 ...

最新文章

  1. 组合数函数-快速提取所有可能的组合数
  2. leetcode算法题--完全平方数★
  3. 【ARM】ARM汇编程序设计(三) 循环结构
  4. Eclipse安装AmaterasUML
  5. mongoose 分页查询
  6. phpstudy下载、安装、配置、网站部署、卸载(windows下php、apache、nginx环境测试)
  7. 前方高能!IT 程序员、软件工程师值得考的证书原来有这么多! | 原力计划
  8. c语言加粗字体怎么弄,excel表格如何批量加粗文字
  9. CAN详解--各家CAN分析仪与软件的比较
  10. Elasticsearch Trying to create too many scroll contexts. Must be less than or equal to: [500]
  11. 应用统计学学什么科目_应用统计学考研科目及总数
  12. 冷山的博客思听有声书摘下载索引页
  13. linux老男孩学习决心书
  14. excel函数提取计算机登录名,Excel查找函数FIND,帮你从复杂的地址中提取城市、区和街道名!-提取文件名...
  15. 腾讯地图的引用html
  16. 如何在虚拟一个USB设备
  17. 电脑崩溃后QQ微信能登录,却打开不了网页的一种解决办法
  18. Python-matplotlib用法
  19. PC817TL431的配合电路问题
  20. 基金投资入门2:基金的风险等级

热门文章

  1. redis保存下来,自己慢慢享用
  2. 【Python OpenCV】图像直方图 calcHist方法 equalizeHist方法
  3. 辣鸡小白记录大作业(废话超多)(私用)1
  4. c语言编程在线菜鸟,C语言编程 菜鸟练习100题(01-10)
  5. navicat连接mysql报错:client does not support authentication protocal requested by server
  6. mysql longblob 读取_MySQL数据库之Mysql的longblob字段插入数据问题解决
  7. 限塑令下的新材料——聚乳酸(PLA)
  8. Qt 绘制图片自适应窗口大小(QImage,QPixmap,QLabel)
  9. 全志常用的各款CPU的性能比较
  10. 安全 创新 实践|海泰方圆受邀参加“数字时代的网信创新与价值共创”技术交流研讨会