冒泡排序

 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. 清除li内a标签的float=left实现a标签在li内居中显示(ul内li不居中显示)

    写在前面: 修改cnblogs主页面菜单显示问题. 问题描述:在给主菜单添加hover样式后发现菜单内容并未居中.见图1. 网上搜索到资料其中一篇讲的可以说简明扼要了,也是伸手党的福利(点我查看原文) ...

  2. 使用Java调用JS

    import junit.framework.TestCase; import javax.script.ScriptEngine; import javax.script.ScriptEngineM ...

  3. android开发学习---基础知识学习、如何导入已有项目和开发一个电话拨号器

    一.基础知识点学习  1.Android体系结构 如图所示,android 架构分为三层: (1)最底层是linux内核,主要是各种硬件的驱动,如相机驱动(Camera Driver),闪存驱动(Fl ...

  4. Linux shell命令:用 !$ 防止误操作

    shell 的通配符匹配非常强大,不过也非常危险,不少同学都碰到这样的问题,比如 rm a*,结果一个手抖,a 和星号之间多了个空格,结果目录下的文件都灰飞烟灭了…… bash 支持一个特殊的变量 ! ...

  5. 【NotePade++】NotePade++如何直接编译运行java文件

    安装Notepad++和JDK(略): Notepad++的菜单栏:插件->Plugin Manager->Show Plugin Manager,Available中勾选NppExec, ...

  6. Fastjson是一个Java语言编写的高性能功能完善的JSON库。

    简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...

  7. 移动硬盘做pe启动盘

  8. [转]python pickle模块

    持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...

  9. There is no Action mapped for namespace / and action name . - [unknown location]

    今天碰到了这个问题,原因不明白. 在webContent下建立了index.jsp后重启项目不报错了. 原因未知.

  10. MapReduce中,new Text()引发的写入HDFS的输出文件多一列的问题

    前段时间业务系统有个模块数据没有了,在排查问题的时候发现中间处理环节出错了,错误日志为文件格式不正确,将数据导出后发现这个处理逻辑的输入文件中每一行都多了一列,而且是一个空列(列分隔符是\t).第一次 ...