您的位置:首页 > 编程语言 > Java开发

qgy总结的一些算法

2014-12-18 21:55 288 查看
[align=left]产生不重复的随机数:1[/align]

[align=left]public class Test {[/align]
[align=left] [/align]
public static void main(String[]
args) {
[align=left] //产生10个15以内不重复的数字。[/align]
[align=left] Test t = new Test();[/align]
[align=left] t.test2();[/align]
[align=left] }[/align]

[align=left] public void test1(){[/align]
[align=left] Random r = new Random();[/align]
[align=left] int[] arr = new int[10];[/align]
[align=left] [/align]
for ( int i
= 0; i < arr. length; i++) {
[align=left] boolean flag= false;[/align]
[align=left] int num = r.nextInt(15);[/align]
for ( int j
= 0; j < arr. length; j++) {
[align=left] if(num==arr[j]){[/align]
[align=left] i--;[/align]
[align=left] flag= true;[/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] if(!flag)[/align]
[align=left] arr[i] = num;[/align]
[align=left] }[/align]
for ( int c
: arr) {
System. out.print( "
"+c);
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void test2(){[/align]
[align=left] Random r = new Random();[/align]
[align=left] long [] arr = new long[935];[/align]
[align=left] boolean flag[]= new boolean[1000];[/align]
[align=left] flag[0]= true;[/align]
for ( int k=1;k<flag. length;k++)
{
[align=left] flag[k]= false;[/align]
[align=left] }[/align]
[align=left] [/align]
for ( int i
= 0; i < arr. length; i++) {
[align=left] int num = r.nextInt(1000);[/align]
[align=left] if(flag[num]== false){[/align]
[align=left] arr[i] = num;[/align]
[align=left] flag[num]= true;[/align]
[align=left] } else{[/align]
[align=left] i--;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] System. out.println( "--------------");[/align]
for ( long c
: arr) {
System. out.print( "
"+c);
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]打印以下图像:(次方)2[/align]

public class Test1
{
[align=left] /*[/align]
[align=left] * 1 0[/align]
[align=left] * 2 1[/align]
[align=left] * 3 4 2[/align]
[align=left] * 5 6 7 8 3[/align]
[align=left] * 9 10 11 12 13 14 15 16 4[/align]
[align=left] */[/align]
[align=left] [/align]
public static void main(String[]
args) {
[align=left] System. out.println();[/align]
[align=left] Test1 t= new Test1();[/align]
[align=left] t.printData(135);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //解法[/align]
public void printData( int n)
{
[align=left] int c=0;[/align]
for ( int i =
1; i <= n; i++) {
if( i<=Math. pow(2,
c)){
System. out.print( i+"
");
[align=left] } else{[/align]
[align=left] ++c;[/align]
[align=left] -- i;[/align]
[align=left] System. out.println();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]

[align=left]}[/align]

[align=left]/**[/align]
[align=left] * 这是用java反射来实现对对象的属性,方法,类名的取值。再组成一条万能的insert 语句。3[/align]
[align=left] * @author 小高[/align]
[align=left] */[/align]

[align=left]public class Test2 {[/align]

public static void main(String[]
args) throws Exception {
[align=left] Test2 t= new Test2();[/align]
[align=left] Student stu= new Student(); //可以对任意对象操作[/align]
[align=left] stu.setName( "小高");[/align]
[align=left] stu.setAge(20);[/align]
[align=left] stu.setId(11);[/align]
[align=left] [/align]
[align=left] String sql=t.createInsertSql(stu);[/align]
[align=left] System. out.println(sql);[/align]
[align=left] }[/align]
[align=left] [/align]
private String createInsertSql(Object obj) throws Exception
{
[align=left] Class cls=obj.getClass();[/align]
String sql="insert into "+cls.getSimpleName()+ "
("; //类名
[align=left] Field fields[]=cls.getDeclaredFields();[/align]
[align=left] String columnName=""; //列名[/align]
[align=left] String columnValue=""; //列值[/align]
[align=left] Object objs[]=new Object[fields.length]; //多少个字段就多少个值[/align]
for (int i
= 0; i < fields. length; i++) {
[align=left] String fieldName=fields[i].getName(); //获得字段[/align]
[align=left] String fieldMethodOfget=fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1, fieldName.length());[/align]
[align=left] Method methodofget = cls.getMethod("get"+fieldMethodOfget, null);[/align]
[align=left] Object value= methodofget.invoke(obj, null); //字段的值 [/align]
[align=left] if(value!= null){ //判断是否设置值[/align]
[align=left] columnName+= ","+fieldName;[/align]
[align=left] if(value.getClass().getSimpleName().equals( "String")){[/align]
[align=left] columnValue+= ",'"+value+ "'";[/align]
[align=left] } else{[/align]
[align=left] columnValue+= ","+value;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] columnName=columnName.substring(1, columnName.length());[/align]
[align=left] sql+=columnName+") values (";[/align]
[align=left] columnValue=columnValue.substring(1, columnValue.length());[/align]
[align=left] sql+=columnValue +")";[/align]
[align=left] return sql;[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]package com.one1;[/align]

[align=left]public class Test3 {[/align]

[align=left]/* 蛇形矩阵4[/align]
[align=left] 【样例输出】[/align]
[align=left] 1 3 6 10 15[/align]
[align=left] 2 5 9 14 [/align]
[align=left] 4 8 13 [/align]
[align=left] 7 12 [/align]
[align=left] 11[/align]
[align=left]*/[/align]
[align=left] [/align]
public static void main(String[]
args) {
[align=left] Test3 t= new Test3();[/align]
[align=left] t.test(8);[/align]
[align=left] }[/align]
[align=left] [/align]
public void test(int n)
{
int arr[][]= new int

;
[align=left] arr[0][0]=1;[/align]
[align=left] int column=n;[/align]
for ( int i
= 0; i < n; i++) {
for ( int j
= 0; j < column; j++) {
[align=left] if(j==0){ //第一列[/align]
[align=left] if(i>0)[/align]
[align=left] arr[i][j]=arr[i-1][j]+i;[/align]
[align=left] } else{[/align]
[align=left] //一行中某列与前一列的关系[/align]
[align=left] arr[i][j]=arr[i][j-1]+(i+1+j);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] column-=1;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //输出[/align]
for ( int i
= 0; i < n; i++) {
for ( int j
= 0; j < n; j++) {
[align=left] if(arr[i][j]!=0)[/align]
System. out.print(arr[i][j]+ "
");
[align=left] }[/align]
[align=left] System. out.println(); //换行[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]

[align=left]public class Test4 {[/align]

[align=left] /*5[/align]
[align=left] 01--02 06--07 15--16 28--29 [/align]
[align=left] / / / / / / /[/align]
[align=left] 03 05 08 14 17 27 30 43 [/align]
[align=left] | / / / / / / / |[/align]
[align=left] 04 09 13 18 26 31 42 44 [/align]
[align=left] / / / / / / /[/align]
[align=left] 10 12 19 25 32 41 45 54 [/align]
[align=left] | / / / / / / / |[/align]
[align=left] 11 20 24 33 40 46 53 55 [/align]
[align=left] / / / / / / /[/align]
[align=left] 21 23 34 39 47 52 56 61 [/align]
[align=left] | / / / / / / / |[/align]
[align=left] 22 35 38 48 51 57 60 62 [/align]
[align=left] / / / / / / /[/align]
[align=left] 36--37 49--50 58--59 63--64 [/align]
[align=left] */[/align]
[align=left] [/align]
public static void main(String[]
args) {
[align=left] Test4 t= new Test4();[/align]
[align=left] t.printData(t.test2(8));[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] //核心算法[/align]
public int[][]
test2( int n){
int arr[][]= new int

;
for ( int i
= 0; i < n; i++) {
for ( int j=0,c=i;j<=i&&c>=0;j++,c--)
{
[align=left] if(i%2==0){ //偶数行[/align]
[align=left] if(c==i){ //建立与上次循环的关系[/align]
[align=left] if(c==0)[/align]
[align=left] arr[c][j]=1;[/align]
[align=left] else[/align]
[align=left] arr[c][j]=arr[c-1][j]+1;[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] arr[c][j]=arr[c+1][j-1]+1;[/align]
[align=left] } else{ //奇数行[/align]
[align=left] if(c==i)[/align]
[align=left] arr[j][c]=arr[j][c-1]+1; //建立与上次循环的关系[/align]
[align=left] else[/align]
[align=left] arr[j][c]=arr[j-1][c+1]+1;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] return arr;[/align]
[align=left] }[/align]

[align=left] //打印数据[/align]
[align=left] public void printData( int arr[][]){[/align]
[align=left] int n=arr. length;[/align]
for ( int i
= 0; i < n; i++) {
for ( int j
= 0; j < n; j++) {
[align=left] if(arr[i][j]>=10)[/align]
System. out.print(arr[i][j]+ "
");
[align=left] else[/align]
[align=left] if(arr[i][j]!=0)[/align]
System. out.print( "0"+arr[i][j]+ "
");
[align=left] [/align]
[align=left] }[/align]
[align=left] System. out.println();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]

[align=left]public class Test5 {[/align]

[align=left]/*6[/align]
[align=left] 1[/align]
[align=left] 5 2[/align]
[align=left] 8 6 3[/align]
[align=left] 10 9 7 4[/align]
[align=left] [/align]
[align=left] 分析:[/align]
[align=left] arr[1][0] arr[3][3][/align]
[align=left] arr[2][0] arr[3][2] [/align]
[align=left]*/[/align]
public static void main(String[]
args) {
[align=left] Test5 t= new Test5();[/align]
[align=left] Test4 t2= new Test4(); //输出[/align]
[align=left] t2.printData(t.test(10));[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
public int[][]
test(int n){
int arr[][]= new int

;
for ( int i
= 0; i < n; i++) { //控制次数
for ( int j
= 0,c=i;j<n&&c<n; j++,c++) { //一次循环打印的列数
[align=left] if(c==i){[/align]
[align=left] if(c==0)[/align]
[align=left] arr[c][j]=1;[/align]
[align=left] else[/align]
[align=left] arr[c][0]=arr[n-1][n-c]+1;[/align]
[align=left] }[/align]
[align=left] else{[/align]
[align=left] arr[c][j]=arr[c-1][j-1]+1;[/align]
[align=left] } [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] return arr;[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]//冒泡排序,选择排序,插入排序。7[/align]

[align=left]package com.mysort;[/align]

[align=left]public class One {[/align]

[align=left] [/align]
[align=left] [/align]
public static void main(String[]
args) {
[align=left] int arr[]={1,4,9,7,3,8,2,6};[/align]
[align=left] [/align]
[align=left] /*冒泡排序[/align]
[align=left] for ( int i = 0; i < arr.length-1; i++) {[/align]
[align=left] for ( int j = i+1; j < arr.length; j++) {[/align]
[align=left] if( arr[i]>arr [j]){[/align]
[align=left] int t=arr [i];[/align]
[align=left] arr[i]=arr [j];[/align]
[align=left] arr[j]=t;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }*/[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] // 选择排序:每次从剩下的找到最大值放在已经排好中的后面[/align]
[align=left] int index=0; //改变索引[/align]
[align=left] int max; //默认最大[/align]
[align=left] [/align]
for ( int i
= 0; i < arr. length; i++) {
[align=left] [/align]
[align=left] max=arr[index]; //最大值 [/align]
[align=left] int maxIndex=index; //最大下标[/align]

for ( int j=index;
j < arr. length; j++) { //找比较每一轮的最大值,并且记录下标位置
[align=left] if(max<arr[j]){[/align]
[align=left] max=arr[j];[/align]
[align=left] maxIndex=j;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //把找到的最大值放到第一个位置,第一个位置的数放到这一轮找到最大值的位置[/align]
[align=left] int t=arr[i];[/align]
[align=left] arr[i]=max;[/align]
[align=left] arr[maxIndex]=t;[/align]
[align=left] [/align]
[align=left] //从下一个开始找[/align]
[align=left] index++;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] /* 插入排序: 每次和最后一个比较,若比前面下则再换位置,直到不比前面小。[/align]
[align=left] int count=0;[/align]
[align=left] int pos ;[/align]
[align=left] [/align]
[align=left] for ( int i = 1; i < arr.length; i++) {[/align]
[align=left] pos=count; //一开始进来就是和最后一个数比 [/align]
[align=left] int index=i;[/align]
[align=left] while( arr[index]<arr[pos ]&&pos>=0){ //排序数 如果比已经排好的最后一个数小则,和前一个比较[/align]
[align=left] int t=arr [pos];[/align]
[align=left] arr[pos ]=arr[index];[/align]
[align=left] arr[index]=t;[/align]
[align=left] [/align]
[align=left] index-=1; //注意:这是个换了位置的数[/align]
[align=left] pos--; //准备和前一个比较[/align]
[align=left] }[/align]
[align=left] count++;[/align]
[align=left] }*/[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] /* 输出 */[/align]
for ( int j
= 0; j < arr. length; j++) {
System. out.print(arr[j]+ "
");
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]//快速排序8[/align]

[align=left]public class Two{[/align]
[align=left] [/align]
public static void main(String[]
args) {
[align=left] long start=System. currentTimeMillis();[/align]
[align=left] int arr[] ={12,34,11,99,54,21,9,5,101};[/align]
[align=left] Two t= new Two();[/align]
[align=left] t.quicksort(arr,0,arr. length-1);[/align]
[align=left] t.print(arr);[/align]
[align=left] System. out.println( "所花费时间:" +(System.currentTimeMillis()-start));[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] public void quicksort( int arr[], int left, int right){[/align]
[align=left] if(left < right){[/align]
[align=left] int key = arr[left];[/align]
[align=left] int low = left;[/align]
[align=left] int high = right;[/align]
[align=left] while(low < high){[/align]
[align=left] while(low < high && arr[high] > key){[/align]
[align=left] high--;[/align]
[align=left] }[/align]
[align=left] arr[low] = arr[high];[/align]
[align=left] while(low < high && arr[low] < key){[/align]
[align=left] low++;[/align]
[align=left] }[/align]
[align=left] arr[high] = arr[low];[/align]
[align=left] }[/align]
[align=left] arr[low] = key;[/align]
[align=left] quicksort(arr,left,low-1);[/align]
[align=left] quicksort(arr,low+1,right);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] //打印[/align]
public void print(int arr[])
{
for ( int i
= 0; i < arr. length; i++) {
System. out.print(arr[i]+ "
");
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]//模仿遍历树节点,递归遍历。9[/align]

[align=left]package com.bean;[/align]

[align=left]import java.util.*;[/align]
[align=left]public class LookWord {[/align]

[align=left] private ArrayList<TreeBean> treeList = new ArrayList<TreeBean>(); //初始[/align]

public static void main(String[]
args) {
[align=left] LookWord lw = new LookWord();[/align]
[align=left] lw.init(); // 初始化数据[/align]
[align=left] //lw.findAll(lw.treeList); //查找指定的集合[/align]
lw.findWho( "11",lw. treeList); //找到指定的id
的集合
[align=left] }[/align]

[align=left] // 查找id的父节点[/align]
public void findWho(String
id,ArrayList<TreeBean> ts) {
[align=left] for (TreeBean t : ts) {[/align]
[align=left] if(t.getId().equals(id)&&t.getChildren()!= null){ //找到了那个对象就不断查找出来[/align]
[align=left] findAll(t.getChildren());[/align]
[align=left] } else{[/align]
[align=left] if(t.getChildren()!= null){[/align]
[align=left] findWho(id,t.getChildren());[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]

[align=left] // 根据查找的集合查找[/align]
public void findAll(ArrayList<TreeBean>
findList) {
[align=left] // 根据集合的大小找子集合作为查找集合的目标[/align]
for ( int i
= 0; i < findList.size(); i++) {
[align=left] TreeBean tb = findList.get(i);[/align]
System. out.println(tb.toString()); //
不管有没有子节点都要进行输出
if (tb.getChildren() != null)
{ // 如果有子节点则继续输出
[align=left] findAll(tb.getChildren()); // 如果子节点不为空则继续查找[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]

[align=left] // 初始化[/align]
private void init()
{
[align=left] ArrayList<TreeBean> children111 = new ArrayList<TreeBean>();[/align]
[align=left] TreeBean tb111 = new TreeBean( "1111", "one1111", "111");[/align]
[align=left] TreeBean tb112 = new TreeBean( "1112", "one1112", "111");[/align]
[align=left] children111.add(tb111);[/align]
[align=left] children111.add(tb112);[/align]
[align=left] TreeBean tb11 = new TreeBean( "111", "one111", "11");[/align]
[align=left] tb11.setChildren(children111);[/align]
[align=left] TreeBean tb12 = new TreeBean( "112", "one112", "11");[/align]
[align=left] TreeBean tb13 = new TreeBean( "113", "one113", "11");[/align]
[align=left] ArrayList<TreeBean> children11 = new ArrayList<TreeBean>();[/align]
[align=left] children11.add(tb11);[/align]
[align=left] children11.add(tb12);[/align]
[align=left] children11.add(tb13);[/align]
[align=left] // 为11 设置子节点[/align]
[align=left] TreeBean tp11 = new TreeBean( "11", "one1", "1");[/align]
[align=left] tp11.setChildren(children11);[/align]
[align=left] TreeBean tp12 = new TreeBean( "12", "one2", "1");[/align]
[align=left] ArrayList<TreeBean> children1 = new ArrayList<TreeBean>();[/align]
[align=left] children1.add(tp11);[/align]
[align=left] children1.add(tp12);[/align]
[align=left] // 为1设置12,11子节点[/align]
[align=left] TreeBean tb1 = new TreeBean( "1", "one", "0");[/align]
[align=left] tb1.setChildren(children1);[/align]
[align=left] ArrayList<TreeBean> children2 = new ArrayList<TreeBean>();[/align]
[align=left] children2.add( new TreeBean( "21", "two1", "2"));[/align]
[align=left] children2.add( new TreeBean( "22", "two2", "2"));[/align]
[align=left] // 为2设置子节点[/align]
[align=left] TreeBean tb2 = new TreeBean( "2", "two", "0");[/align]
[align=left] tb2.setChildren(children2);[/align]
[align=left] treeList.add(tb1);[/align]
[align=left] treeList.add(tb2);[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]对象实体:[/align]

[align=left]package com.bean;[/align]

[align=left]import java.util.ArrayList;[/align]

[align=left]public class TreeBean {[/align]

[align=left] private String id;[/align]
[align=left] private String text;[/align]
[align=left] private String pid;[/align]
[align=left] private ArrayList<TreeBean> children= new ArrayList<TreeBean>();[/align]
[align=left] [/align]
[align=left] public TreeBean(String id,String text ,String pid){[/align]
[align=left] this. id=id;[/align]
[align=left] this. text=text;[/align]
[align=left] this. pid=pid;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] public String getId() {[/align]
[align=left] return id;[/align]
[align=left] }[/align]
public void setId(String
id) {
this. id =
id;
[align=left] }[/align]
[align=left] public String getText() {[/align]
[align=left] return text;[/align]
[align=left] }[/align]
public void setText(String
text) {
this. text =
text;
[align=left] }[/align]
[align=left] public String getPid() {[/align]
[align=left] return pid;[/align]
[align=left] }[/align]
public void setPid(String
pid) {
this. pid =
pid;
[align=left] }[/align]
[align=left] public ArrayList<TreeBean> getChildren() {[/align]
[align=left] return children;[/align]
[align=left] }[/align]
public void setChildren(ArrayList<TreeBean>
children) {
this. children =
children;
[align=left] }[/align]

[align=left] @Override[/align]
[align=left] public String toString() {[/align]
return "TreeBean [id=" + id + ",
text=" + text + ",
pid=" + pid + "]";
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left]}[/align]

[align=left]//排名前三名的同学成绩:10[/align]

[align=left]public class Three {[/align]
[align=left] String []name;[/align]
[align=left] int []score;[/align]
[align=left] public String[] getName() {[/align]
[align=left] return name;[/align]
[align=left] }[/align]
public void setName (String[]
name) {
this. name =
name;
[align=left] }[/align]
public int[]
getScore() {
[align=left] return score;[/align]
[align=left] }[/align]
public void setScore( int[]
score) {
this. score =
score;
[align=left] }[/align]
[align=left] public Three(int len){[/align]
[align=left] String[] name=new String[len];[/align]
[align=left] int[] score=new int [len];[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public Three(){[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] public void paiXu(){[/align]
[align=left] int temps ;[/align]
[align=left] String tempn;[/align]
[align=left] for(int i=0;i<score.length;i++){[/align]
[align=left] for( int j=0;j< score. length;j++){[/align]
[align=left] if( score[i]< score[j]){[/align]
[align=left] temps= score[i];[/align]
[align=left] score[i]= score[j];[/align]
[align=left] score[j]=temps;[/align]
[align=left] [/align]
[align=left] tempn= name[i];[/align]
[align=left] name[i]= name[j];[/align]
[align=left] name[j]=tempn;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]@Override[/align]
[align=left]public String toString() {[/align]
return "Three [name=" +
Arrays. toString(name) + ", score="
[align=left] + Arrays. toString(score) + "]";[/align]
[align=left]}[/align]

[align=left] public void sd(){[/align]
[align=left] [/align]
[align=left] int one=0,count1=0,two=0,count2=0,three=0,count3=0;[/align]
[align=left] one= score[ score. length-1]; //取第一名[/align]
[align=left] for( int i=0;i< score. length;i++){[/align]
[align=left] if( score[i]==one) [/align]
[align=left] count1++;[/align]
[align=left] }[/align]
two= score[ score. length-1-count1]; //
取第二名 arr9 arr8 arr7
[align=left] for( int i=0;i< score. length;i++){[/align]
[align=left] if( score[i]==two) [/align]
[align=left] count2++;[/align]
[align=left] }[/align]
three= score[ score. length-1-count1-count2]; //
取第二名 arr9 arr8 arr7 arr6 arr5
[align=left] for( int i=0;i< score. length;i++){[/align]
[align=left] if( score[i]==three) [/align]
[align=left] count3++;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] System. out.print( "\n第一名"+count1+"个:" );[/align]
[align=left] for( int i= name. length-1;i> name. length-1-count1;i--)[/align]
[align=left] System. out.print( name[i]+ ":"+ score[i]);[/align]
[align=left] System. out.println( "\n");[/align]
[align=left] System. out.print( "第二名"+count2+"个:" );[/align]
[align=left] for( int i=name. length-1-count1;i> name. length-1-count1-count2;i--)[/align]
[align=left] System. out.print( name[i]+ ":"+ score[i]);[/align]
[align=left] System. out.println( "\n");[/align]
[align=left] System. out.print( "第三名"+count3+"个:" );[/align]
[align=left] for( int i=name. length-1-count1-count2;i> name. length-1-count1-count2-count3;i--)[/align]
[align=left] System. out.print( name[i]+ ":"+ score[i]);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]

[align=left]测试[/align]

[align=left]public class ThreeTest {[/align]

public static void main(String[]
args) {
[align=left] // 取前三名的成绩和名字[/align]
[align=left] String name[]={ "张三1","张三2" ,"张三3" ,"张三4" ,"张三5" ,"张三6" ,"张三7" ,"张三8" ,"张三9" ,"张三10" ,};[/align]
[align=left] int score[]={98,98,97,96,96,56,77,65,22,87};[/align]
[align=left] Three ts= new Three(name. length);[/align]
[align=left] ts. setName(name);[/align]
[align=left] ts.setScore(score);[/align]
[align=left] ts.paiXu();[/align]
[align=left] String result=ts.toString();[/align]
[align=left] System. out.println(result); //输出已经过排序的成绩和对应的名字[/align]
[align=left] ts.sd();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]

[align=left] /**[/align]
[align=left] * 二分法查找11[/align]
[align=left] *[/align]
[align=left] * @param arr[/align]
[align=left] * 数组[/align]
[align=left] * @param num[/align]
[align=left] * 要查找的数字[/align]
[align=left] * @return 返回位置[/align]
[align=left] */[/align]
[align=left] [/align]

[align=left]package mysort;[/align]

[align=left]import java.util.Scanner;[/align]

[align=left]public class HalfSelect {[/align]

[align=left] /**[/align]
[align=left] * 二分法查找[/align]
[align=left] *[/align]
[align=left] * @param arr[/align]
[align=left] * 数组[/align]
[align=left] * @param num[/align]
[align=left] * 要查找的数字[/align]
[align=left] * @return 返回位置[/align]
[align=left] */[/align]
private static int halfLook(int[]
arr, int num) {// 二分法查找
[align=left] int middle;[/align]
int start = 0, last = arr. length -
1;
[align=left] if (num < arr[start] || num > arr[last])[/align]
[align=left] return -1;[/align]
while ( true)
{
[align=left] middle = (last + start) / 2; // 求中间位置[/align]
[align=left] if (start > last) {[/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] if (num > arr[middle]) {[/align]
[align=left] start = middle + 1;[/align]
} else if (num
< arr[middle]) {
[align=left] last = middle - 1;[/align]
[align=left] } else[/align]
return middle; //
相等则返回
[align=left] }[/align]
[align=left] return -1;[/align]
[align=left] }[/align]

public static void halfShow( int arr[])
{
[align=left] Scanner input = new Scanner(System. in);[/align]
[align=left] System. out.println( "请输入你要查找的数:" );[/align]
[align=left] int n = input.nextInt();[/align]
[align=left] int w = halfLook(arr, n);[/align]
[align=left] if (w >= 0)[/align]
[align=left] System. out.println(( new StringBuilder( "位置:")).append(w).toString());[/align]
[align=left] else[/align]
[align=left] System. out.println( "没有该数!" );[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]

[align=left]/**[/align]
[align=left] * 拷贝文件(把D盘java1中的java文件拷贝到 jad文件夹改成 txt文件后缀名)12[/align]
[align=left] * @param args[/align]
[align=left] * @throws Exception[/align]
[align=left] */[/align]

[align=left]package mylove;[/align]

[align=left]import java.io.*;[/align]

[align=left]public class CopyFile[/align]
[align=left]{[/align]
[align=left] /**[/align]
[align=left] * 拷贝文件(把D盘java1中的java文件拷贝到 jad文件夹改成 txt文件后缀名)[/align]
[align=left] * @param args[/align]
[align=left] * @throws Exception[/align]
[align=left] */[/align]
public static void main(String
args[]) throws Exception{
[align=left] long lasting = System. currentTimeMillis();[/align]
[align=left] File f = new File( "D:\\java1");[/align]
[align=left] File md = new File( "D:\\jad");[/align]
[align=left] if (!md.exists())[/align]
[align=left] md.mkdir();[/align]
[align=left] if (f.exists() && f.isDirectory()){[/align]
File file[] = f.listFiles( new FilenameFilter()
{
public boolean accept(File
dir, String name)
[align=left] {[/align]
[align=left] return name.endsWith( ".java");[/align]
[align=left] }[/align]

[align=left] });[/align]
for ( int i
= 0; i < file. length; i++)
[align=left] {[/align]
[align=left] BufferedReader bf = null;[/align]
[align=left] BufferedWriter bw = null;[/align]
[align=left] bf = new BufferedReader( new InputStreamReader(new FileInputStream(file[i])));[/align]
[align=left] String fname = file[i].getName().replaceAll("\\.java$" , ".txt" );[/align]
bw = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(new File(md,
fname))));
[align=left] char ch[] = new char[1024];[/align]
for ( int len
= 0; (len = bf.read(ch)) != -1;)
[align=left] {[/align]
[align=left] bw.write(ch, 0, len);[/align]
[align=left] bw.newLine();[/align]
[align=left] bw.flush();[/align]
[align=left] }[/align]

[align=left] bf.close();[/align]
[align=left] bw.close();[/align]
[align=left] }[/align]

[align=left] } else[/align]
[align=left] {[/align]
[align=left] System. out.println( "无此文件夹" );[/align]
[align=left] }[/align]
System. out.println(System. currentTimeMillis() -
lasting);
[align=left] }[/align]
[align=left]}[/align]

[align=left]are you looking for a relativation ship to comple yourself ?[/align]
[align=left]come on, don't give me that look.[/align]
[align=left]who cares that your think .[/align]
[align=left]why you should do that ![/align]

[align=left]/**[/align]
[align=left] * 递归某个文件夹下的所有文件13[/align]
[align=left] * @author Administrator[/align]
[align=left] *[/align]
[align=left] */[/align]

[align=left]package mylove;[/align]

[align=left]import java.io.*;[/align]
[align=left]/**[/align]
[align=left] * 递归某个文件夹下的所有文件[/align]
[align=left] * @author Administrator[/align]
[align=left] *[/align]
[align=left] */[/align]
[align=left]public class DiguiFile[/align]
[align=left]{[/align]
public static void main(String
args[])
[align=left] {[/align]
[align=left] File my = new File( "E:\\smole");[/align]
[align=left] show(my);[/align]
[align=left] }[/align]

public static void show(File
my)
[align=left] {[/align]
[align=left] if (my != null)[/align]
[align=left] if (my.isDirectory())[/align]
[align=left] {[/align]
[align=left] File f[] = my.listFiles();[/align]
[align=left] if (f != null)[/align]
[align=left] {[/align]
for ( int i
= 0; i < f. length; i++)
[align=left] show(f[i]);[/align]
[align=left] }[/align]
[align=left] } else[/align]
[align=left] {[/align]
[align=left] System. out. println(my);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]I get pocket for the sunshine .[/align]

[align=left]/**[/align]
[align=left] * 数123,数3的学生退出,最后剩下的是谁14[/align]
[align=left] * @param args[/align]
[align=left] */[/align]

[align=left]import java.util.*;[/align]

[align=left]public class TheLastPerson[/align]
[align=left]{[/align]
[align=left]/**[/align]
[align=left] * 数123,数3的学生退出,最后剩下的是谁[/align]
[align=left] * @param args[/align]
[align=left] */[/align]
public static void main(String
args[])
[align=left] {[/align]
[align=left] System. out.println( "数123,数3的学生退出,最后剩下的是谁?" );[/align]
[align=left] System. out.println( "请输入学生个数:" );[/align]
[align=left] Scanner input = new Scanner(System. in);[/align]
[align=left] int num = input.nextInt();[/align]
[align=left] [/align]
[align=left] //13个人都没报数[/align]
[align=left] boolean bl[] = new boolean[num];[/align]
for ( int i
= 0; i < bl. length; i++){
[align=left] bl[i] = true;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] int index = 0; //剩下的人[/align]
[align=left] int lastnum = num; //剩下的人[/align]
[align=left] int countNum = 0; //报数[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] while (lastnum > 1)[/align]
[align=left] {[/align]
[align=left] if (bl[index] && ++countNum == 3) //如果留下来,且[/align]
[align=left] {[/align]
[align=left] countNum = 0; //数到3归零从新报数[/align]
[align=left] bl[index] = false; //标记那个位置为假的,报过数退出的[/align]
[align=left] lastnum--; //退出一个数量减1[/align]
[align=left] }[/align]
if (++index == num) //索引报数到最后这个人的
时候就从头报数,索引回到0
[align=left] index = 0;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
for ( int i
= 0; i < num; i++){
[align=left] if (bl[i])[/align]
System. out.println(( new StringBuilder( "留下来的是第" )).append(i
+ 1).append("个同学" ).toString());
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]//删除重复的单词。15[/align]

public class removeWord
{

[align=left] /**[/align]
[align=left] * 删除字符串中出现的字符[/align]
[align=left] * @param args[/align]
[align=left] */[/align]
public static void main(String[]
args) {
[align=left] System. out.println( "请输入一串字符" );[/align]
[align=left] Scanner input =new Scanner(System. in);[/align]
[align=left] String str=input.nextLine();[/align]
[align=left] System. out.println( "请输入要删除的字符" );[/align]
[align=left] String delStr=input.nextLine();[/align]
[align=left] StringBuffer sb= new StringBuffer();[/align]
[align=left] sb.append(str);[/align]
[align=left] for( int i=0;i<sb.length();i++){[/align]
[align=left] String s= ""+sb.charAt(i);[/align]
[align=left] if(s.trim().equals(delStr)){[/align]
sb=sb. deleteCharAt(i); //
删除字符
[align=left] i--;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] System. out.println( "最后输出结果为:" +sb);[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]//颠倒字符串数组16[/align]

[align=left]public class reverseString {[/align]

[align=left] /**[/align]
[align=left] * 旋转字符串 如: I am a student [/align]
[align=left] * 结果为: student a am I[/align]
[align=left] * @param arr[/align]
[align=left] */[/align]
public static void reverse(String
arr[])
[align=left] {[/align]
[align=left] int start = 0;[/align]
for ( int end =
arr.length - 1; start < end ; end--)
[align=left] {[/align]
[align=left] String temp = arr[start];[/align]
[align=left] arr[start] = arr[ end];[/align]
[align=left] arr[ end] = temp;[/align]
[align=left] start++;[/align]
[align=left] }[/align]
[align=left] System. out.println( "\n颠倒后的结果为:" );[/align]
for ( int i
= 0; i < arr. length; i++)
System.out.print((new StringBuilder(String.valueOf(arr[i]))).append( "
").toString());

[align=left] }[/align]
[align=left] [/align]
public static void main(String[]
args) {
[align=left] System. out.println( "请输入一串字符" );[/align]
[align=left] Scanner input=new Scanner(System. in);[/align]
[align=left] String str=input.nextLine();[/align]
[align=left] String arr[]=str.split( " ");[/align]
[align=left] reverse(arr);[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]/**[/align]
[align=left] * 输入一个日期 ,判断是星期几17[/align]
[align=left] * @author 小高[/align]
[align=left] * @date 2013 -08 -24[/align]
[align=left] *[/align]
[align=left] */[/align]
public class date2
{
public static void main(String[]
args) {
[align=left] System. out.println( "要想知道是星期几?那请输入一个日期:" );[/align]
[align=left] Scanner input=new Scanner(System.in);[/align]
[align=left] String strDate=input.nextLine();[/align]
[align=left] String strArray[]=strDate.split( "-");[/align]
[align=left] int year=Integer.parseInt(strArray[0]); //年[/align]
[align=left] int month=Integer.parseInt(strArray[1]); //月[/align]
[align=left] int day=Integer.parseInt(strArray[2]); //日[/align]
[align=left] [/align]
[align=left] //思路: 1900年1月1日是星期一[/align]

[align=left] //到现在的总年数天数[/align]
[align=left] int sumYearDays=0;[/align]
[align=left] for(int y=1900;y<year;y++){[/align]
[align=left] if(y%400==0||(y%4==0&&y%100!=0)){ //闰年[/align]
[align=left] sumYearDays+=366;[/align]
[align=left] } else[/align]
[align=left] sumYearDays+=365;[/align]
[align=left] }[/align]

[align=left] //当前年份的 月份、日期 的 总天数[/align]
[align=left] int monthArr[]={31,28,31,30,31,30,31,31,30,31,30,31}; //12个月的天数[/align]
[align=left] if(year%400==0||(year%4==0&&year%100!=0)){ //闰年[/align]
[align=left] monthArr[1]=29;[/align]
[align=left] }[/align]
[align=left] //如输入1月3号 或 2月3号 3月3号[/align]
[align=left] int sumMonthAndDays=day;[/align]
[align=left] if(month!=1){[/align]
[align=left] for( int i=0;i<month-1;i++){[/align]
[align=left] sumMonthAndDays+=monthArr[i];[/align]
[align=left] }[/align]
[align=left] }else{[/align]
[align=left] sumMonthAndDays=day;[/align]
[align=left] }[/align]

[align=left] int sumDays= sumYearDays+sumMonthAndDays; //总天数[/align]
[align=left] [/align]
[align=left] //求星期几 余数[/align]
[align=left] int week=sumDays%7;[/align]
[align=left] String strWeek= "日一二三四五六" ;[/align]
System. out.println( "你好,"+strDate+"是:
星期" +strWeek.charAt(week));
[align=left] }[/align]
[align=left]}[/align]

[align=left] /**[/align]
[align=left] * 统计同成绩的人数18[/align]
[align=left] */[/align]

public class SameSore
{
[align=left] [/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] * 统计同成绩的人数[/align]
[align=left] *[/align]
[align=left] * @param args[/align]
[align=left] */[/align]
public static void main(String[]
args) {

int arr[] = { 65, 70, 80, 50,
70, 80 };
[align=left] Arrays. sort(arr); // 升序排列[/align]
int len = arr. length -
1;

[align=left] System. out.println( "请输入前多少名?" );[/align]
[align=left] Scanner input=new Scanner(System. in);[/align]
[align=left] int num=input.nextInt();[/align]
[align=left] [/align]
int count[] = new int[num+1]; //由于第1个不取,所以长度比实际的加1
,存储第多少名的 数据
[align=left] int score[]= new int[len+1]; //成绩[/align]
[align=left] //第几名 多少个同学[/align]
[align=left] [/align]
for ( int k
= 1; k <= count. length-1; k++) {
[align=left] int hasCount=0;[/align]
[align=left] for( int j=1;j<=k;j++){[/align]
[align=left] hasCount+=count[j]; //已经统计的个数[/align]
[align=left] }[/align]
for ( int i
= len - hasCount; i >= 0; i--) { //统计第几名重复了几个
if (arr[i] == arr[len
- hasCount]) {
[align=left] score[k]=arr[len - hasCount]; //第几名的分数[/align]
[align=left] count[k]++; //第几名的个数[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] // 结果:[/align]
for ( int i
= 1; i <count. length; i++) {
[align=left] try{[/align]
System. out.println( "第" +
i + "名,成绩为"+score[i]+":" + count[i]);
} catch(ArrayIndexOutOfBoundsException
e){
[align=left] System. out.println( "第"+i+ "名超出范围哦!" );[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] //推断过程: // 第一名找出后 ,统计和第一名相等的分数有几个[/align]

[align=left]/**[/align]
[align=left] * 最大公约数算法:给两个数,如果两个数相等,最大公约数是其本身;如果不等,取两个数相减的绝对值和两个数中最小的数比较,[/align]
[align=left] * 相等则为最大公约,不等则继续上面的算法,直到相等 19[/align]
[align=left] * @author Administrator[/align]
[align=left] */[/align]
[align=left]public class BigYueShu {[/align]

public static void main(String[]
args) {
[align=left] yueshu(16,12);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public static void yueshu(int num1,int num2){[/align]
[align=left] if(num1==num2){[/align]
[align=left] System. out.println(num2);[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] yueshu(Math.abs (num1-num2),Math.min(num1,num2));[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]20[/align]

package AC;

import java.util.ArrayList;

import java.util.List;

public class Abc {

public static void main(String[] args) {

String word="abc";

Abc one=new Abc();

List<String> list=new ArrayList<String>();

one.method1(word, "", list);

System.out.println(list.toString());

}

//先删除第0,1,2个 ,有 bc ac ab 三种组合方法

public void method1(String base,String buff,List<String> result) {

if(base.length()<=0)

{result.add(buff); }

for (int i = 0; i < base.length(); i++) {

method1(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i),result);

}

//第一次删除a,留下bc, a先存起来,接着把bc删除第一个 , 留下c,ab存起来,接着删除c,留下空。然后 abc存起来,放到集合中。

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 java