冒泡排序

 package com.lcw.bubble;

 public class BubbleSort
{
/**
* 冒泡排序
* @param args
* @author 成鹏致远
*/ public static int[] bubleSort(int[] before)
{
int temp;
for (int i = 0; i < before.length; i++)
{
for (int j = 0; j < before.length-i-1; j++)//依次进行排序
{
if (before[j] > before[j+1])
{
temp = before[j+1];
before[j+1] = before[j];
before[j] = temp;
}
}
}
return before;
} }

选择排序

 package com.lcw.select;
/**
*@author 成鹏致远
*@net http://infodown.tap.cn
*/
public class SelectionSort
{
public static void selectionSort(int[] number)
{
for(int i=0; i<number.length-1; i++)
{
int m =i;//每次确定一个最小数
for (int j=i+1; j<number.length; j++)
{
if(number[j] <number[m])
{
m =j;
}
}
if (i != m)
{
swap(number,i,m);
}
}
} private static void swap(int[] number, int i, int j)//用于交换数组中的索引为i,j的数
{
int t;
t = number[i];
number[i] = number[j];
number[j] = t;
}
}

快速排序

 package com.lcw.quick;

 /**
* @author 成鹏致远
* @net http://infodown.tap.cn
*/
public class Quick
{
//排序方法,接受一个int[]参数,将会调用快速排序方法进行排序
public static void sort(int[] number)
{
quickSort(number, 0, number.length-1);
} public static void quickSort(int[] number, int left, int right)
{
if (left < right)
{
int s = number[left];//基准元素
int i = left;
int j = right+1;
while (true)
{
//向右找大于s的数的索引
while(i+1 < number.length && number[++i] < s);
//向左找小于s的数的索引
while(j-1 > -1 && number[--j] > s);
//如果i>=j;退出循环
if (i >= j)
{
break;
}
//否则交换索引i 和j 的元素
swap(number,i,j);
}
//此时 number[left]为基准元素
// number[(left+1)~i]<number[left]
// number[(j+1)~right]>number[left]
// number[j]存放最小数(j从右往左,比较完所有的数)
number[left] = number[j];//最小数放在数组的最前面
number[j] = s;//s为基准元素,遍历一遍后,从j位置分为两个无序数组继续递归排序 //对左边进行递归
quickSort(number, left, j-1);
//对右边进行递归
quickSort(number, j+1, right);
}
} private static void swap(int[] number, int i, int j)//用于交换数组中的索引为i,j的数
{
int t;
t = number[i];
number[i] = number[j];
number[j] = t;
}
}

三大排序算法测试代码

 package com.lcw.test;

 import java.util.Arrays;

 import com.lcw.bubble.BubbleSort;
import com.lcw.quick.Quick;
import com.lcw.select.SelectionSort;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array; public class Test
{
public static void main(String[] args)
{
int test[] = {4,3,5,9,1}; //数组的静态初始化 // BubbleSort.bubleSort(test); //冒泡排序
// Arrays.sort(test); //利用Arrays类的静态方法对数组进行排序
// SelectionSort.selectionSort(test);//选择排序
Quick.sort(test);//快速排序 System.out.println("排序后:");
for (int i=0; i<test.length; i++)
{
System.out.println(test[i]);
}
} }

队列

 package com.lcw.queue;

 public class Queue
{
/**
* 队列
* @param args
* @author 成鹏致远
* @net http://infodown.tap.cn
*/ private int front = -1, rear = -1;//队头和队尾
private String[] queue;//定义一个数组模拟队列 public Queue(int maxElements)//构造器,参数为队列长度
{
queue = new String[maxElements];
} public void enqueue(String s)//入列
{
queue[++rear] = s;
} public boolean isEmpty()//判断是否为空
{
return front == rear;
} public boolean isFull()//判断是否已满
{
return rear== queue.length - 1;
} public String dequeue()//出列
{
return queue[++front];
}
}

队列测试代码

 package com.lcw.test;

 import com.lcw.queue.Queue;

 public class Test
{
public static void main(String[] args)
{
Queue queue = new Queue(10); queue.enqueue("1->lcw");
queue.enqueue("2->mystery"); System.out.println("队列中第一个元素:"+queue.dequeue());
System.out.println("队列中第二个元素:"+queue.dequeue()); if (queue.isEmpty())
{
System.out.println("队列已空!");
}
} }

 package com.lcw.stack;

 public class Stack
{
/**
* 栈
* @param args
* @author 成鹏致远
* @net http://infodown.tap.cn
*/ private int capacity = 100;
private String[] items;
private int top = 0; public Stack()//不带参构造器
{
this(100);
} public Stack(int cap)//带参数构造器
{
this.capacity = cap;
items = new String[cap];
} public void push(String s)//入栈
{
top++;
items[top] = s;
} public void pop()//出栈
{
items[top] = null;
top--;
} public void empty()//清空堆栈
{
top = 0;
} public String top()//取出最顶端的堆栈元素
{
return items[top];
} public int size()//获取堆栈元素个数
{
return top;
}
}

栈测试代码

 package com.lcw.test;

 import com.lcw.stack.Stack;

 public class Test
{
public static void main(String[] argv)
{
Stack myStack = new Stack(5); myStack.push("lcw");
myStack.push("mystery"); System.out.println("堆栈中元素个数:"+myStack.size());
System.out.println("最上面的是:"+myStack.top()); myStack.pop();
System.out.println("POP后->堆栈中元素个数:"+myStack.size());
System.out.println("POP后->最上面的是:"+myStack.top());
}
}

生成不重复的随机数队列

     /**
* 生成不重复的随机数
* @param args
* @author 成鹏致远
* @net http://infodown.tap.cn
*/ Random random = new Random(System.currentTimeMillis());
//利用Random(当前时间)生成随机数 StudentInfo info = new StudentInfo(); System.out.print("请输入需要输出的学生信息个数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); //得到需要输出学生信息的个数 int record[] = new int[num];
int intRd = 0;//存放随机数
int count = 0;//记录生成的随机数个数
boolean IsRecord = false;//是否已经生成过标志
// System.out.println("数组的长度是:"+record.length); while (count < num)//生成指定范围内无重复的随机数
{
intRd = Math.abs(random.nextInt()%30);
//将随机数限制为30以下的非负数
for (int i = 0; i < count; i++)
{
if(record[i] == intRd)
{
IsRecord = true;
break;
}
else
{
IsRecord = false;
}
}
if(!IsRecord)
{
record[count++] = intRd;
}
} for(int a=0; a<num; a++)
{
info.getStudentInfo(record[a]);
}

【Java】Java复习笔记-三大排序算法,堆栈队列,生成无重复的随机数列的更多相关文章

  1. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  2. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  3. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  4. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  5. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  6. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  7. 程序兵法:Java String 源码的排序算法(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 <程序兵法:Java Str ...

  8. Java实现经典七大经典排序算法

    利用Java语言实现七大经典排序算法:冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序. 分类 类别 算法 插入排序类 插入排序.希尔排序 选择排序类 选择排序.堆排序 交换排序类 ...

  9. 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)

    Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...

随机推荐

  1. Kibana 日志查询

    1 概述 很多系统的日志都会放在 Kibana 供查询,就是所谓的 ELK.Kibana 除了可以使用界面供的一些 tab 或者 button 去筛选日志,也可以在搜索栏中使用 Lucene 的语法简 ...

  2. mytop安装,使用mytop监控MySQL性能

    本文主要描述mytop安装,安装过程中可能出现的报错,以及使用mytop监控MySQL性能. 欢迎转载,请注明作者.出处. 作者:张正 blog:http://space.itpub.net/2635 ...

  3. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  4. Win7 U盘安装Ubuntu16.04 双系统详细教程(方法一)

    主要分为以下几步: 一. 下载Ubuntu 16.04镜像软件: 二. 制作U盘启动盘使用ultraISO: 三. 安装Ubuntu系统: 四. 用EasyBCD 创建启动系统启动引导: (根据个人情 ...

  5. string与char*的转换方法

    c_str函数的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程. c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言 ...

  6. 从android aidl理解Proxy/stub模式

    在小7写的上一篇文章<android IPC通信机制梳理>里,我讲到了如果activity要想和一个跨进程的Service进行通信就需要通过Binder框架,获取到IBinder对象,并调 ...

  7. linux 命令中的find locate whereis which type 使用区别

    find 最强大,但参数也较多,需指定查找目录,如 find / -name “filename” locate 是一个快速查找命令,有预先索引好的数据库,由于数据库是定时更新,因此,结果上可能会有迟 ...

  8. GIT 简单版

    Git规范 by 程序亦非猿 2016.4.6 这又是一篇我在公司分享的,想制定一下Git的规范,有兴趣的可以看看~ 上一篇在这里 分支模型 每个项目必须要有master.develop分支. 每个开 ...

  9. springboot 多模块 maven 项目构建jar 文件配置

    最近在写 springboot 项目时,需要使用多模块,遇到了许多问题. 1 如果程序使用了 java8 的一些特性,springboot 默认构建工具不支持.需要修改配置 ... </buil ...

  10. MySQL 主外键约束与标准SQL不同的地方

    [标准SQL的外键约束条件] 1): 子表引用父表的主键 drop table if exists child,parent; create table if not exists parent( i ...