学java要算法吗_学习java不可不知的几种算法
1、冒泡排序算法:编程语言算法中比较经典的算法。每个程序员都必须了解和会运用的。
AAA软件教育
程序算法基础
通过多次比较(相邻两个数)和交换来实现排序:
public class bubble {
public static void bubbleSort(int[] a) {
int temp;
for (int i = 1; i < a.length; i++) {
//将相邻两个数进行比较,较大的数往后冒泡
for (int j = 0; j < a.length - i; j++) {
if (a[j] > a[j + 1]) {
//交换相邻两个数
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
public static void main(String[] args) {
int[] mao= {213,123,342,543,12,67,98,320,421,4,15,54,27,34,17};
System.out.print("排序前的数组为:\n"); //输出排序前的数组
for(int i=0;i
{
System.out.print(mao[i]+" ");
}
System.out.print("\n");
bubbleSort(mao); //排序操作
System.out.print("排序后的数组为:\n");
for(int i=0;i
{
System.out.print(mao[i]+" "); //输出排序后的数组
}
System.out.print("\n");
}
}
2、直接插入排序
通过对未排序的数据执行逐个插入至合适的位置而完成排序
public class straight{
public static void straightInsertion(int[] arr) {
int current;//要插入的数
//从1开始第一次一个数不需要排序
for (int i = 1; i < arr.length; i++) {
current = arr[i];
int j = i - 1; //序列元素个数
//从后往前循环,将大于当前插入数的向后移动
while (j >= 0 && arr[j] > current) {
arr[j + 1] = arr[j]; //元素向后移动
j--;
}
arr[j + 1] = current; //找到位置,插入当前元素
}
}
}
3、快速选择排序
通过多次比较和交换来实现排序。首先设定一个分界值,将所有数值与分界值比较,左小右大,比较和交换数据值进而完成排序
public class quick{
static void quickSort(int[] arr,int left,int right) {
int f,t,rtemp,ltemp;
ltemp=left;
rtemp=right;
f=arr[(left+right)/2]; //分界值
while(ltemp
{
while(arr[ltemp]
{
++ltemp;
}
while(arr[rtemp]>f)
{
--rtemp;
}
if(ltemp<=rtemp)
{
t=arr[ltemp];
arr[ltemp]=arr[rtemp];
arr[rtemp]=t;
rtemp--;
ltemp++;
}
}
if(left
{
quickSort(arr,left,ltemp-1); //递归调用
}
if(ltemp
{
quickSort(arr,rtemp+1,right); //递归调用
}
}
}
4、希尔排序,又称Shell排序或缩小增量排序
(1)将有n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1个数据为一对。
(2)一次循环使每一个序列对排好顺序。
(3)然后,再变为n/4个序列,再次排序。
(4)不断重复上述过程,随着序列减少最后变为一个,也就完成了整个排序。
代码如下:public class shell{
static void shellSort(int[] a){
int h,temp,x=0;
for(int r=a.length/2;r>=1;r/= 2) //划组排序
{
for(int i=r;i
{
temp=a[i];
int j=i-r;
while(j>=0 && temp
{
a[j+r]=a[j];
j-=r;
}
a[j+r]=temp;
}
x++;
}
}
}
5、堆排序:构造堆结构、堆排序输出来实现排序
public class pratice {
public static void heapSort(int a[],int n)
{
int i,j,h,k;
int t;
for(i=n/2-1;i>=0;i--) //将a[0,n-1]建成大根堆
{
while(2*i+1
{
j=2*i+1 ;
if((j+1)
{
if(a[j]
学java要算法吗_学习java不可不知的几种算法相关推荐
- 学习java的心得体会_学习java的心得体会范文.doc
学习java的心得体会范文 篇一:JAVA学习的心得体会 ? 国家队每一次踢球失败后都要说这么一句:我们回去后要好好总结,下次会打得更好! ? 总结不代表就能改过原有的不足,也不代表就能进步了 ? ( ...
- 学java的就业方向_学习Java的就业前景怎么样
相信很多人对Java都有一定的了解,无论学习什么专业,最重要的一个目的就是进行就业,那么在选择专业的时候,应该如何选择呢?Java是现在很多人优先选择的专业,那么Java的就业前景如何呢?下面小编就几 ...
- java游戏猿人时代_学习java编程就业前景如何
对于大多数学生来说,学习编程语言是为了更好的就业.由于Java在电子商务,企业级开发应用程序,游戏编程等许多领域中都发挥着重要作用,因此即使到2020年,学习Java仍将是一种热潮,其发展前景将非常可 ...
- java语言就业方向_学习java以后的就业方向有哪些-百度经验
什么是java: Java是一种简单的,面向对象的,分布式的,说明型的,健壮安全的,结构中立的,可移植的,性能优异.多线程的动态语言.Java分为三个体系JavaSE(Java2 Platform S ...
- 学java的正确方法_学习Java编程 这10个技巧不容错过--中享思途
这是一个国外大神20多年的经验总结出来的-- "任何可能出错的事情,最后都会出错." 这就是人们为什么喜欢进行"防错性程序设计"的原因.偏执的习惯有时很有意义, ...
- 学习java的中文网站_学习java的网站有哪些
1.Stack overflow Stack可能是编程界中非常流行的网站了 , 是一个与程序相关的 IT 技术问答网站,用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的 ...
- Java的泛型特性_学习Java的重中之重!
Java的"泛型"特性,你以为自己会了 使用Java的小伙伴,对于Java的一些高级特性一定再熟悉不过了,例如集合.反射.泛型.注解等等,这些可以说我们在平时开发中是经常使用到的, ...
- 学习java 需要先学c 吗_学习Java需要先学C语言吗
C语言是面向过程的,Java是面向对象的,思想不一样,一门语言的基础部分不过是一些关于数的类型,字符的类型的定义.但是就是这些简单的组合,组成复杂的系统. 学Java不一定要C基础,单从语言本身,你买 ...
- 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码
原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...
最新文章
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(设置图例位置、移除图例)实战
- UA MATH564 概率论 QE练习题3
- 边框border属性总结
- PP: 混合生产方式(MTO与MTS为例)
- mybatis的环境搭建及如何和搭配spring使用
- java 对象读写_java 对象输入输出流读写文件的操作实例
- 磁盘空间去向不明的问题
- Servlet的学习(四)
- 定义和使用含有泛型的接口
- java中的char可以存储汉字吗?
- java 标记_java的标记算法
- 移动端安全 - 安卓Android - 漏洞修复方案整理
- Android官方开发文档Training系列课程中文版:多样屏幕之实现自适应UI
- python字典替换值_python字典改变value值方法总结
- 【原创】记一次HttpWebRequest中国移动查账单爬虫的攻克历程
- DropdownList获取ID方法
- 计算机开机桌面黑,电脑能正常启动但屏幕全黑原因和解决方法
- 饥荒联机版服务器控制台本地和在线,饥荒联机版服务器代码有哪些_服务器常用指令一览_3DM单机...
- Redisson(2-2)分布式锁实现对比 VS Java的ReentrantLock之带超时时间的tryLock
- 两道非常容易理解错的OSPF问题. 加深理解LSA的概念和ABR/ASBR的概念.