算法代码模板java 算法代码模板

java中排序算法代码package temp;
import sun.misc.Sort;
/**
* @author zengjl
* @version 1.0
* @since 2007-08-22
* @Des java几种基本排序方法
*/
/**
* SortUtil:排序方法
* 关于对排序方法算法代码模板java的选择算法代码模板java:这告诉我们算法代码模板java,什么时候用什么排序最好 。当人们渴望先知道排在前面算法代码模板java的是谁时,
* 我们用选择排序算法代码模板java;当我们不断拿到新的数并想保持已有的数始终有序时,我们用插入排序;当给出的数
* 列已经比较有序,只需要小幅度的调整一下时,我们用冒泡排序 。
*/
public class SortUtil extends Sort {
/**
* 插入排序法
* @param data
* @Des 插入排序(Insertion Sort)是,每次从数列中取一个还没有取出过的数,并按照大小关系插入到已经取出的数中使得已经取出的数仍然有序 。
*/
public int[] insertSort(int[] data) {
1/11页
int temp;
for (int i = 1; idata.length; i) {
for (int j = i; (j0)(data[j]data[j - 1]); j--) {
swap(data, j, j - 1);
}
}
return data;
}
/**
* 冒泡排序法
* @param data
* @return
* @Des 冒泡排序(Bubble Sort)分为若干趟进行,每一趟排序从前往后比较每两个相邻的元素的大?。ㄒ虼艘惶伺判蛞冉蟦-1对位置相邻的数)并在
* 每次发现前面的那个数比紧接它后的数大时交换位置;进行足够多趟直到某一趟跑完后发现这一趟没有进行任何交换操作(最坏情况下要跑n-1趟,
* 这种情况在最小的数位于给定数列的最后面时发生) 。事实上,在第一趟冒泡结束后,最后面那个数肯定是最大的了,于是第二次只需要对前面n-1
* 个数排序,这又将把这n-1个数中最小的数放到整个数列的倒数第二个位置 。这样下去,冒泡排序第i趟结束后后面i个数都已经到位了,第i 1趟实
* 际上只考虑前n-i个数(需要的比较次数比前面所说的n-1要?。?。这相当于用数学归纳法证明了冒泡排序的正确性
JAVA 求助一段算法代码!求大神~~~~~看完你的,自己写了一个 。很简陋 。你的改动比较大 。一时半会改不了 。
你的写好了 。改动有点大 。鼠标事件mousePressed()中实现移动 。由于时间没做优化,主要处理方法是判断当前listenerPanel的上下左右是否存在上面是0的listenerPanel,存在则交换上面数字及背景颜色 。自己可以优化下里面代码,
思路:
PuzzleTile jb = (PuzzleTile) e.getSource();
for(int i=0;ilistenerPanel.length;i){
if(jb.equals(listenerPanel[i])){
//判断当前listenerPanel[i]上下左右是否存有listenerPanel的上面数字是0的,如果存在
则把当前的listenerPanel[i]的背景颜色及数字与上面是0 的交换 。判断周围是否存在有点及是否交换有点复杂 。
}
}
代码修改如下:少量注释
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.*;
public class PuzzleTile extends JPanel{
private String tileNumber;
public PuzzleTile(int number) {
super();
if (number == 0) {
this.setBackground(Color.white);
}
else {
this.setBackground(Color.darkGray);
}
this.tileNumber = ""number;
}
public void setTitleNumber(inttileNumber){//设置上面的数字
this.tileNumber=tileNumber "";
}
public int getTitleNumber(){//获得上面的数字
return Integer.parseInt(tileNumber);
}
public void paintComponent(Graphics graphics) {
Font a=new Font("Arial",Font.BOLD,30);
graphics.setFont(a);
graphics.setColor(Color.white);
super.paintComponent(graphics);
FontMetrics b=graphics.getFontMetrics(a);
int c=b.stringWidth(tileNumber);
int d=b.getAscent();
int e=getWidth()/2-c/2;
int f=getHeight()/2 d/2;
graphics.drawString(tileNumber,e,f);
}
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Random;
public class SlidingPuzzle extends JFrame implements MouseListener
{
public static void main(String[] args){
SlidingPuzzle frame=new SlidingPuzzle();
frame.TestPanel();
frame.setTitle("Numeric Sliding Puzzle");
frame.setSize(400,400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
PuzzleTile[] listenerPanel;
public void TestPanel(){
Container container=getContentPane();
container.setLayout(new GridLayout(3,3,5,5));
listenerPanel=new PuzzleTile[9];
ArrayListInteger myList=new ArrayListInteger();
int m;
for(int i=0;i9;i){
m=new Random().nextInt(9);
if(!myList.contains(m))
myList.add(m);
else
i--;
}
for(int i=0;ilistenerPanel.length;i){
listenerPanel[i]=new PuzzleTile(myList.get(i));
container.add(listenerPanel[i]);
listenerPanel[i].addMouseListener(this);
}
}
public void mousePressed(MouseEvent e){
PuzzleTile jb = (PuzzleTile) e.getSource();
int m=jb.getTitleNumber();
//依次判断每一个listenerPanel上下左右是否存在上面数字为0的listenerPanel
if(jb.equals(listenerPanel[0])){
if(listenerPanel[1].getTitleNumber()==0){
listenerPanel[0].setBackground(Color.white);
listenerPanel[0].setTitleNumber(0);
listenerPanel[1].setTitleNumber(m);
listenerPanel[1].setBackground(Color.darkGray);
}
if(listenerPanel[3].getTitleNumber()==0){
listenerPanel[0].setBackground(Color.white);
listenerPanel[0].setTitleNumber(0);
listenerPanel[3].setTitleNumber(m);
listenerPanel[3].setBackground(Color.darkGray);
}
}else if(jb.equals(listenerPanel[1])){
if(listenerPanel[0].getTitleNumber()==0){
listenerPanel[1].setBackground(Color.white);
listenerPanel[1].setTitleNumber(0);
listenerPanel[0].setTitleNumber(m);
listenerPanel[0].setBackground(Color.darkGray);
}
if(listenerPanel[2].getTitleNumber()==0){
listenerPanel[1].setBackground(Color.white);
listenerPanel[1].setTitleNumber(0);
listenerPanel[2].setTitleNumber(m);
listenerPanel[2].setBackground(Color.darkGray);
}
if(listenerPanel[4].getTitleNumber()==0){
listenerPanel[1].setBackground(Color.white);
listenerPanel[1].setTitleNumber(0);
listenerPanel[4].setTitleNumber(m);
listenerPanel[4].setBackground(Color.darkGray);
}
}else if(jb.equals(listenerPanel[2])){
if(listenerPanel[1].getTitleNumber()==0){
listenerPanel[2].setBackground(Color.white);
listenerPanel[2].setTitleNumber(0);
listenerPanel[1].setTitleNumber(m);
listenerPanel[1].setBackground(Color.darkGray);
}
if(listenerPanel[5].getTitleNumber()==0){
listenerPanel[2].setBackground(Color.white);
listenerPanel[2].setTitleNumber(0);
listenerPanel[5].setTitleNumber(m);
listenerPanel[5].setBackground(Color.darkGray);
}
}else if(jb.equals(listenerPanel[3])){
if(listenerPanel[0].getTitleNumber()==0){
listenerPanel[3].setBackground(Color.white);
listenerPanel[3].setTitleNumber(0);
listenerPanel[0].setTitleNumber(m);
listenerPanel[0].setBackground(Color.darkGray);
}
if(listenerPanel[4].getTitleNumber()==0){
listenerPanel[3].setBackground(Color.white);
listenerPanel[3].setTitleNumber(0);
listenerPanel[4].setTitleNumber(m);
listenerPanel[4].setBackground(Color.darkGray);
}
if(listenerPanel[6].getTitleNumber()==0){
listenerPanel[3].setBackground(Color.white);
listenerPanel[3].setTitleNumber(0);
listenerPanel[6].setTitleNumber(m);
listenerPanel[6].setBackground(Color.darkGray);
}
}else if(jb.equals(listenerPanel[4])){
if(listenerPanel[1].getTitleNumber()==0){
listenerPanel[4].setBackground(Color.white);
listenerPanel[4].setTitleNumber(0);
listenerPanel[1].setTitleNumber(m);
listenerPanel[1].setBackground(Color.darkGray);
}
if(listenerPanel[7].getTitleNumber()==0){
listenerPanel[4].setBackground(Color.white);
listenerPanel[4].setTitleNumber(0);
listenerPanel[7].setTitleNumber(m);
listenerPanel[7].setBackground(Color.darkGray);
}
if(listenerPanel[3].getTitleNumber()==0){
listenerPanel[4].setBackground(Color.white);
listenerPanel[4].setTitleNumber(0);
listenerPanel[3].setTitleNumber(m);
listenerPanel[3].setBackground(Color.darkGray);
}
if(listenerPanel[5].getTitleNumber()==0){
listenerPanel[4].setBackground(Color.white);
listenerPanel[4].setTitleNumber(0);
listenerPanel[5].setTitleNumber(m);
listenerPanel[5].setBackground(Color.darkGray);
}
}else if(jb.equals(listenerPanel[5])){
if(listenerPanel[4].getTitleNumber()==0){
listenerPanel[5].setBackground(Color.white);
listenerPanel[5].setTitleNumber(0);
listenerPanel[4].setTitleNumber(m);
listenerPanel[4].setBackground(Color.darkGray);
}
if(listenerPanel[2].getTitleNumber()==0){
listenerPanel[5].setBackground(Color.white);
listenerPanel[5].setTitleNumber(0);
listenerPanel[2].setTitleNumber(m);
listenerPanel[2].setBackground(Color.darkGray);
}
if(listenerPanel[8].getTitleNumber()==0){
listenerPanel[5].setBackground(Color.white);
listenerPanel[5].setTitleNumber(0);
listenerPanel[8].setTitleNumber(m);
listenerPanel[8].setBackground(Color.darkGray);
}
}else if(jb.equals(listenerPanel[6])){
if(listenerPanel[3].getTitleNumber()==0){
listenerPanel[6].setBackground(Color.white);
listenerPanel[6].setTitleNumber(0);
listenerPanel[3].setTitleNumber(m);
listenerPanel[3].setBackground(Color.darkGray);
}
if(listenerPanel[7].getTitleNumber()==0){
listenerPanel[6].setBackground(Color.white);
listenerPanel[6].setTitleNumber(0);
listenerPanel[7].setTitleNumber(m);
listenerPanel[7].setBackground(Color.darkGray);
}
}else if(jb.equals(listenerPanel[7])){
if(listenerPanel[6].getTitleNumber()==0){
listenerPanel[7].setBackground(Color.white);
listenerPanel[7].setTitleNumber(0);
listenerPanel[6].setTitleNumber(m);
listenerPanel[6].setBackground(Color.darkGray);
}
if(listenerPanel[8].getTitleNumber()==0){
listenerPanel[7].setBackground(Color.white);
listenerPanel[7].setTitleNumber(0);
listenerPanel[8].setTitleNumber(m);
listenerPanel[8].setBackground(Color.darkGray);
}
if(listenerPanel[4].getTitleNumber()==0){
listenerPanel[7].setBackground(Color.white);
listenerPanel[7].setTitleNumber(0);
listenerPanel[4].setTitleNumber(m);
listenerPanel[4].setBackground(Color.darkGray);
}
}else {
if(listenerPanel[5].getTitleNumber()==0){
listenerPanel[8].setBackground(Color.white);
listenerPanel[8].setTitleNumber(0);
listenerPanel[5].setTitleNumber(m);
listenerPanel[5].setBackground(Color.darkGray);
}
if(listenerPanel[7].getTitleNumber()==0){
listenerPanel[8].setBackground(Color.white);
listenerPanel[8].setTitleNumber(0);
listenerPanel[7].setTitleNumber(m);
listenerPanel[7].setBackground(Color.darkGray);
}
}
boolean b=true;//是否完成标记
for(int i=0;ilistenerPanel.length;i){//判断listenerPanel[0]~listenerPanel[8]上的数字是从0~8.若是完成拼图
if(listenerPanel[i].getTitleNumber()!=i)
b=false;
}
if(b==true){
int i=JOptionPane.showConfirmDialog(null, "would you paly agin?");
if(i==0){
if(i==0){
Rectangle re=this.getBounds();
this.dispose();
SlidingPuzzle slidingPuzzle=new SlidingPuzzle();
slidingPuzzle.setBounds(re);
}
else if(i==1)
System.exit(0);
else ;
}
}
}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}
如果运行过程什么问题追问或者hi
怎么用java代码实现开平方算法?这是算法代码模板java我应聘时写算法代码模板java的算法代码算法代码模板java,运行成功算法代码模板java:
//这是用java编写的一个求2的平方根的程序,精确度可通过修改weishu参数来改变
public class app
{ //用二分法求2的平方根
public static void main(String args[])
{
int a[],b[],s[],d[],c[],ss[];
int i,j,k;
a=new int[1000];
b=new int[1000];
s=new int[1000];
d=new int[1000];
c=new int[1000];
ss=new int[1000];
boolean jingque;
jingque=true;
a[0]=b[0]=2;
a[2]=b[2]=1;
a[1]=4;
b[1]=5;
int weishu=200;//定义循环次数
for(i=0;i1000;i)
s[i]=0;
for(k=0;kweishu;k)
{
hanshucheng.cheng(b,b,s);
j=s[0];
while (s[j]=2)
{
hanshuadd.add(a,b,c);
hanshuchu.chu(d,c);
hanshucopy.copy(ss,b);
hanshucopy.copy(b,d);
hanshucheng.cheng(b,b,s);
j=s[0];
// for(i=0;i=s[0];i)
//System.out.println("s[" i "]=" s[i]);
}
hanshucopy.copy(a,b);
hanshucopy.copy(b,ss);
}
for(i=a[0];i=1;i--)
System.out.print(a[i]);
System.out.print("左边计算到" a[0] "位\n");
for(i=b[0];i=1;i--)
System.out.print(b[i]);
System.out.print("右边计算到" b[0] "位\n");
for(i=a[0],j=b[0];jingque==true;i--,j--)
if(a[i]==b[j])
System.out.print(a[i]);
else
jingque=false;
System.out.print("精确到" (a[0]-i-1) "位\n");
}
}
class hanshucheng
{
public static void cheng( int a[],int b[],int s[])//定义两数相乘的函数
{
int flag=0,flag1=0;
int number=b[0];
int c[]=new int[1000];
int i,j,k,u;
for(int i1=0;i11000;i1)
s[i1]=0;
for(i=1;i=number;i)
{
for(int i1=0;i11000;i1)
c[i1]=0;
for(j=i,k=1;jnumber i;j,k)
{
c[j]=(a[k]*b[i] flag);
flag=(a[k]*b[i] flag)/10;
}
if (flag!=0)
{
c[j]=flag;
flag=0;
j=j 1;
}
c[0]=j-1;
//for(k=1;k=c[0];k)
//System.out.println("c=" c[k]);
for(k=1;k=c[0];k)
{ u=s[k];
s[k]=(u c[k] flag1);
flag1=(u c[k] flag1)/10;
}
if(flag1!=0)
{
s[k]=flag1;
k=k 1;
flag1=0;
}
s[0]=k-1;
// for(k=0;k=s[0];k)
//System.out.println(s[k]);
}
}
}
class hanshuadd
{
public static void add(int a[],int b[],int c[])//定义两数相加的函数
{
int flag=0;int i,j,k;
int a1[]=new int[1000];
for(i=1;i=b[0];i)
a1[i]=0;
for(j=b[0]-a[0] 1,k=1;j=b[0];j,k)
a1[j]=a[k];
//for(k=0;k=j;k)
//System.out.println("a1=" a1[k]);
for(i=1;i=b[0];i)
{
c[i]=(a1[i] b[i] flag);
flag=(a1[i] b[i] flag)/10;
}
if(flag!=0)
{
c[i]=flag;
i=i 1;
flag=0;
}
c[0]=i-1;
}
}
class hanshuchu
{
public static void chu(int d[],int a[])//定义任一数除以2的函数
{
int flag=0,i;
for(i=a[0];i=1;i--)
{
d[i 1]=(flag*10 a[i])/2;
flag=(flag*10 a[i])%2;
}
if(flag!=0)
d[1]=5;
if(d[1]==0)
for(i=1;i=a[0] 1;i)
d[i]=d[i 1];
d[i]=0;
d[0]=a[0] 1;
}
}
class hanshucopy
{
public static void copy(int a[],int b[])//定义
{
int i;
for(i=0;i=b[0];i)
a[i]=b[i];
while (i1000)
a[i]=0;
}
}
java中基数排序算法代码/**
* 冒泡法排序br/
* li比较相邻的元素 。如果第一个比第二个大,就交换他们两个 。/li
* li对每一对相邻元素作同样的工作 , 从开始第一对到结尾的最后一对 。在这一点,最后的元素应该会是最大的数 。/li
* li针对所有的元素重复以上的步骤,除了最后一个 。/li
* li持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 。/li
*
* @param numbers
*需要排序的整型数组
*/
public static void bubbleSort(int[] numbers) {
int temp; // 记录临时中间值
int size = numbers.length; // 数组大小
for (int i = 0; isize - 1; i) {
for (int j = i1; jsize; j) {
if (numbers[i]numbers[j]) { // 交换两数的位置
temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
}
求:用JAVA语言编写的银行家算法的源代码import java.util.*;
class ThreadTest {
static int type = 4, num = 10; //定义资源数目和线程数目
static int[] resource = new int[type]; //系统资源总数
//static int[] copyResource = new int[type]; //副本
static Random rand = new Random();
static Bank[] bank = new Bank[num]; //线程组
Bank temp = new Bank();
public void init() {
//初始化组中每个线程,随机填充系统资源总数
for(int i = 0; itype; i)
resource[i] = rand.nextInt(10)80;
System.out.print("Resource:");
for(int i = 0; itype; i)
System.out.print(" "resource[i]);
System.out.println("");
for(int i = 0; ibank.length; i)
bank[i] = new Bank("#"i);
}
public ThreadTest4() {
init();
}
class Bank extends Thread {
//银行家算法避免死锁
public int[]
max = new int[type], //总共需求量
need = new int[type], //尚需资源量
allocation = new int[type]; //已分配量
private int[]
request = new int[type], //申请资源量
copyResource = new int[type]; //资源副本
private boolean isFinish = false; //线程是否完成
int[][] table = new int[bank.length][type*4]; //二维资源分配表
private void init() {
// 随机填充总共、尚需、已分配量
synchronized(resource) {
for(int i = 0; itype; i) {
max[i] = rand.nextInt(5)10;
need[i] = rand.nextInt(10);
allocation[i] = max[i] - need[i];
resource[i] -= allocation[i]; //从系统资源中减去已分配的
}
printer();
for(int i = 0; itype; i) {
if(resource[i]0) {
//若出现已分配量超出系统资源总数的错误则退出
System.out.println("The summation of Threads' allocations is out of range!");
System.exit(1);
}
}
}
}
public Bank(String s) {
setName(s);
init();
start();
【算法代码模板java 算法代码模板】}
public Bank() {
//none
}
public void run() {
try {
sleep(rand.nextInt(2000));
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
while(true) {
//程序没有完成时一直不断申请资源
if(askFor() == false) {
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
}
else
tryRequest();
if(noNeed() == true)
break;
}
//休眠一段时间模拟程序运行
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println(getName()" finish!");
synchronized(resource) {
//运行结束释放占有资源
for(int i = 0; itype; i) {
resource[i]= allocation[i];
need[i] = allocation[i] = max[i] = 0;
}
}
}
private void printer() {
//打印当前资源信息
System.out.print(getName()" Max:");
for(int i = 0; itype; i)
System.out.print(" "max[i]);
System.out.print(" Allocation:");
for(int i = 0; itype; i)
System.out.print(" "allocation[i]);
System.out.print(" Need:");
for(int i = 0; itype; i)
System.out.print(" "need[i]);
System.out.print(" Available:");
for(int i = 0; itype; i)
System.out.print(" "resource[i]);
System.out.println("");
}
private boolean askFor() {
//随机产生申请资源量并检测是否超标
boolean canAsk = false;
for(int i = 0; itype; i) {
request[i] = rand.nextInt(20);
//防止申请量超过所需量
if(request[i]need[i])
request[i] = need[i];
}
for(int i = 0; itype; i) //防止随机申请资源全为0
if(request[i]0)
canAsk = true;
synchronized(resource) {
//锁住可供资源检查是否超标
for(int i = 0; itype; i) {
if(request[i]resource[i])
//如果申请资源超过可供资源则等待一段时间后重新申请
return false;
}
}
return canAsk;
}
private void tryRequest() {
//创建副本尝试分配请求
synchronized(resource) {
for(int i = 0; itype; i)
//依然要防止请求量超出范围
if(request[i]resource[i])
return;
for(int i = 0; itype; i) {
//复制资源量并减去需求量到一个副本上
copyResource[i] = resource[i];
copyResource[i] -= request[i];
}
System.out.print(getName()" ask for:");
for(int i = 0; itype; i)
System.out.print(" "request[i]);
System.out.println("");
if(checkSafe() == true) {
//如果检查安全则将副本值赋给资源量并修改占有量和需求量
for(int i = 0; itype; i) {
resource[i] = copyResource[i];
allocation[i]= request[i];
need[i] -= request[i];
}
System.out.println(getName()" request succeed!");
}
else
System.out.println(getName()" request fail!");
}
}
private boolean checkSafe() {
//银行家算法检查安全性
synchronized(bank) {
//将线程资源信息放入二维资源分配表检查安全性,0~type可用资源/type~type*2所需资源/type*2~type*3占有资源/type*3~-1可用 占用资源
for(int i = 0; ibank.length; i) {
for(int j = type; jtype*2; j) {
table[i][j] = bank[i].need[j%type];
}
for(int j = type*2; jtype*3; j) {
table[i][j] = bank[i].allocation[j%type];
}
}
//冒泡排序按需求资源从小到大排
for(int i = 0; ibank.length; i) {
for(int j = i; jbank.length-1; j) {
sort(j, 4);
}
}
//进行此时刻的安全性检查
for(int i = 0; itype; i) {
table[0][i] = copyResource[i];
table[0][i type*3] = table[0][i]table[0][i type*2];
if(table[0][i type*3]table[1][i type])
return false;
}
for(int j = 1; jbank.length-1; j) {
for(int k = 0; ktype; k) {
table[j][k] = table[j-1][k type*3];
table[j][k type*3] = table[j][k]table[j][k type*2];
if(table[j][k type*3]table[j 1][k type])
return false;
}
}
}
return true;
}
private void sort(int j, int k) {
//递归冒泡排序
int tempNum;
if(table[j][k]table[j 1][k]) {
for(int i = type; itype*2; i) {
tempNum = table[j][i];
table[j][i] = table[j 1][i];
table[j 1][i] = tempNum;
}
/*temp = bank[j];
bank[j] = bank[j 1];
bank[j 1] = temp;*/
}
else if(table[j][k] == table[j 1][k]ktype*2) //此资源量相同时递归下一个资源量排序并且防止超出范围
sort(j, k 1);
}
private boolean noNeed() {
//是否还需要资源
boolean finish = true;
for(int i = 0; itype; i) {
if(need[i] != 0) {
finish = false;
break;
}
}
return finish;
}
}
public static void main(String[] args) {
ThreadTest t = new ThreadTest();
//后台线程,设定程序运行多长时间后自动结束
new Timeout(30000, "---Stop!!!---");
}
}
关于算法代码模板java和算法代码模板的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读