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不可不知的几种算法相关推荐

  1. 学习java的心得体会_学习java的心得体会范文.doc

    学习java的心得体会范文 篇一:JAVA学习的心得体会 ? 国家队每一次踢球失败后都要说这么一句:我们回去后要好好总结,下次会打得更好! ? 总结不代表就能改过原有的不足,也不代表就能进步了 ? ( ...

  2. 学java的就业方向_学习Java的就业前景怎么样

    相信很多人对Java都有一定的了解,无论学习什么专业,最重要的一个目的就是进行就业,那么在选择专业的时候,应该如何选择呢?Java是现在很多人优先选择的专业,那么Java的就业前景如何呢?下面小编就几 ...

  3. java游戏猿人时代_学习java编程就业前景如何

    对于大多数学生来说,学习编程语言是为了更好的就业.由于Java在电子商务,企业级开发应用程序,游戏编程等许多领域中都发挥着重要作用,因此即使到2020年,学习Java仍将是一种热潮,其发展前景将非常可 ...

  4. java语言就业方向_学习java以后的就业方向有哪些-百度经验

    什么是java: Java是一种简单的,面向对象的,分布式的,说明型的,健壮安全的,结构中立的,可移植的,性能优异.多线程的动态语言.Java分为三个体系JavaSE(Java2 Platform S ...

  5. 学java的正确方法_学习Java编程 这10个技巧不容错过--中享思途

    这是一个国外大神20多年的经验总结出来的-- "任何可能出错的事情,最后都会出错." 这就是人们为什么喜欢进行"防错性程序设计"的原因.偏执的习惯有时很有意义, ...

  6. 学习java的中文网站_学习java的网站有哪些

    1.Stack overflow Stack可能是编程界中非常流行的网站了 , 是一个与程序相关的 IT 技术问答网站,用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的 ...

  7. Java的泛型特性_学习Java的重中之重!

    Java的"泛型"特性,你以为自己会了 使用Java的小伙伴,对于Java的一些高级特性一定再熟悉不过了,例如集合.反射.泛型.注解等等,这些可以说我们在平时开发中是经常使用到的, ...

  8. 学习java 需要先学c 吗_学习Java需要先学C语言吗

    C语言是面向过程的,Java是面向对象的,思想不一样,一门语言的基础部分不过是一些关于数的类型,字符的类型的定义.但是就是这些简单的组合,组成复杂的系统. 学Java不一定要C基础,单从语言本身,你买 ...

  9. 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码

    原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(设置图例位置、移除图例)实战
  2. UA MATH564 概率论 QE练习题3
  3. 边框border属性总结
  4. PP: 混合生产方式(MTO与MTS为例)
  5. mybatis的环境搭建及如何和搭配spring使用
  6. java 对象读写_java 对象输入输出流读写文件的操作实例
  7. 磁盘空间去向不明的问题
  8. Servlet的学习(四)
  9. 定义和使用含有泛型的接口
  10. java中的char可以存储汉字吗?
  11. java 标记_java的标记算法
  12. 移动端安全 - 安卓Android - 漏洞修复方案整理
  13. Android官方开发文档Training系列课程中文版:多样屏幕之实现自适应UI
  14. python字典替换值_python字典改变value值方法总结
  15. 【原创】记一次HttpWebRequest中国移动查账单爬虫的攻克历程
  16. DropdownList获取ID方法
  17. 计算机开机桌面黑,电脑能正常启动但屏幕全黑原因和解决方法
  18. 饥荒联机版服务器控制台本地和在线,饥荒联机版服务器代码有哪些_服务器常用指令一览_3DM单机...
  19. Redisson(2-2)分布式锁实现对比 VS Java的ReentrantLock之带超时时间的tryLock
  20. 两道非常容易理解错的OSPF问题. 加深理解LSA的概念和ABR/ASBR的概念.

热门文章

  1. gcc的简单使用教程
  2. OpenTSDB 安装
  3. Flink ProcessFunction 介绍使用
  4. Let‘s Fluent:更顺滑的MyBatis
  5. MaxCompute full outer join改写left anti join实践
  6. 疫情下开源数据库逆势增长,新基建下国产数据库迎机遇
  7. 【开发者成长】阿里代码缺陷检测探索与实践
  8. 重构技术架构首先解决组织架构
  9. 用Flink取代Spark Streaming!知乎实时数仓架构演进
  10. 从阿里云数据库入选Gartner谈数据库的演化