冒泡排序

 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. nsTimer的简单用法

    //用nstimer的用法 一种用法,要手动加入到NsRunLoop中 NSTimer *time= [NSTimer timerWithTimeInterval: target:self selec ...

  2. (原)PyTorch中使用指定的GPU

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他G ...

  3. 常用Raspberry Pi周边传感器的使用教程(转)

    转:http://bbs.xiaomi.cn/thread-7797152-1-1.html 在Raspberry Pi 的使用和开发过程中,你可能时常需要一些硬件和传感器等来支持你的开发工作,例如, ...

  4. Jetty安装配置

    1) 从官方网站下载绿色版的jetty 下载地址:http://download.eclipse.org/jetty/ 我下载的是 jetty-distribution-7.5.4.v20111024 ...

  5. magento 为用户注册增加一个字段(转)

    步骤 I. 加一个occupation/title字段到用户注册页,差不多在register.html的54行,在email下方加一个Occupation显示代码 代码: <li>< ...

  6. 指尖下的js ——多触式web前端开发之二:处理简单手势(转)

    这篇文章将描述多触式网页开发中对手势(Gesture)事件的处理.     水果设备中的Gesture,广义的说包括手指点击(click),轻拂(flick),双击(double-click),两只手 ...

  7. 安卓7.0遇到 android.os.FileUriExposedException: file:///storage/emulated.. exposed beyond app through Intent.getData()

    1.在AndroidManifest.xml中添加如下代码 <?xml version="1.0" encoding="utf-8"?> <m ...

  8. objgraph无法生成分析图的原因

    x = [1, 2, 3]y = [x, dict(key1=x)]z = [y, (x, y)] import objgraphobjgraph.show_refs([y],filename='sa ...

  9. Source Insight中代码块注释

    转载:http://blog.csdn.net/cindylx422/article/details/7560786 修改工程目录下的utils.em文件,将下面代码添加到末尾,然后将此文件添加到工程 ...

  10. 获取最新chromedriver.exe的方法,并查阅最新的chromedriver.exe支持到什么chrome版本

    1.打开https://chromedriver.storage.googleapis.com/index.html  (需要FQ),这个页面提供 所有 chromedirver版本下载, 版本排列 ...