「java实现排列」java实现各种排序算法

博主:adminadmin 2022-11-29 15:15:09 63

今天给各位分享java实现排列的知识,其中也会对java实现各种排序算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用java实现一个数组的排列

首先根据数组的类型不同排序方式也是不同的,如果是基本类型数组,那么使用冒泡或者其他排序方式都是很简单的,例如:。如果不想自己写排序算法那么使用Arrays.sort()进行排序也是不错的。

如果是自定义类型的数组,推荐使用java自带的工具类:Comparable接口,并重写CompareTo()方法。或者Compartor。

用java编写实现下图中的数学排列规律

先分析规律,从第二行开始,每行4个,逆序顺序交替,末尾空一首位空一交替。

然后用for循环不断的书写这个数列,然后在数列中找到需要找的数字的位置,即这个数字所在索引。

下面为实现代码:

package baidu;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class MathList {

//数列的尽头

private static int max;

//要找到的数字

private static int bingo;

//最后一行的数字个数

private static int sizeoflastrow;

//行数

private static int rows;

//每行的排序方式,0为顺序,1为逆序

private static int order;

//排序后的数列

private static ListListString numbers = new ArrayListListString();

public static void main(String[] args) {

System.out.println("请输入最大数");

Scanner scan = new Scanner(System.in);

max = scan.nextInt();

System.out.println("请输入要找到的数字");

bingo = scan.nextInt();

scan.close();

//计算最后一行数字的个数及行数

if (max=5) {

sizeoflastrow = max%5;

rows = 1;

} else if (max5){

sizeoflastrow = (max-5)%4;

if (sizeoflastrow==0) {

rows = ((max-5)-(max-5)%4)/4+1;

} else {

rows = ((max-5)-(max-5)%4)/4+2;

}

}

System.out.println("行数为"+rows+"行");

System.out.println("最后一行数字的个数为"+sizeoflastrow+"个");

//为每行插入数据

for (int i = 0; i  rows; i++) {

//计算此行是顺序还是逆序

order = i%2;

ListString listi = new ArrayListString();

//如果此行为第一行

if (i==0) {

for (int j = 0; j  max  j  5; j++) {

listi.add(new Integer(j+1).toString());

}

while (listi.size()5) {

listi.add("");

}

//如果此行为最后一行

} else if (i!=0  i==rows-1){

//如果此行是顺序

if (order == 0) {

//先插入一个空位

listi.add("");

//按顺序插入数字

for (int j = 0; j  sizeoflastrow; j++) {

listi.add(new Integer(5+(i-1)*4+j+1).toString());

}

//末尾补足空位

for (int j = 0; j  4-sizeoflastrow; j++) {

listi.add("");

}

//如果此行是逆序

} else if (order == 1){

//先按逆序插入数字

for (int j = 0; j  sizeoflastrow; j++) {

listi.add(new Integer(5+(i-1)*4+(4-j)).toString());

}

//末尾补足空位

for (int j = 0; j  5-sizeoflastrow; j++) {

listi.add("");

}

}

//如果此行既不是首行也不是末行

} else if (i!=0  i!=rows-1){

//如果此行是顺序

if (order == 0) {

//先插入一个空位

listi.add("");

//按顺序插入数字

for (int j = 0; j  4; j++) {

listi.add(new Integer(5+(i-1)*4+j+1).toString());

}

//如果此行是逆序

} else if (order == 1){

//先按逆序插入数字

for (int j = 0; j  4; j++) {

listi.add(new Integer(5+(i-1)*4+(4-j)).toString());

}

//末尾插入一个空位

listi.add("");

}

}

numbers.add(listi);

}

System.out.println("排序后数组输出为");

System.out.println("\tA\tB\tC\tD\tE");

for (int j = 0; j  rows; j++) {

String s = (j+1)+"行\t"+numbers.get(j).get(0);

for (int k = 1; k  5; k++) {

s = s + "\t" + numbers.get(j).get(k);

}

System.out.println(s);

}

System.out.print("要找的数字\""+bingo+"\"在:");

for (int j = 0; j  numbers.size(); j++) {

ListString list = numbers.get(j);

for (int j2 = 0; j2  5; j2++) {

if (list.get(j2).equals(new Integer(bingo).toString())) {

System.out.print("第"+(j+1)+"行,第"+(j2+1)+"列");

}

}

}

}

}

关于JAVA组合排列的实现

import java.util.Arrays;

import java.util.LinkedList;

 

public class RecursionNArray

{

    private static LinkedListchar[] recursionSub ( LinkedListchar[] list, int count, char[][] array, int ind,

            int start, int... indexs )

    {

        start++;

        if (start  count - 1)

        {

            return null;

        }

        if (start == 0)

        {

            indexs = new int[array.length];

        }

        for ( indexs

今天给各位分享java实现排列的知识,其中也会对java实现各种排序算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

 = 0; indexs

今天给各位分享java实现排列的知识,其中也会对java实现各种排序算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

  array

今天给各位分享java实现排列的知识,其中也会对java实现各种排序算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

.length; indexs

今天给各位分享java实现排列的知识,其中也会对java实现各种排序算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

++ )

        {

            recursionSub (list, count, array, 0, start, indexs);

            if (start == count - 1)

            {

                char[] temp = new char[count];

                for ( int i = count - 1; i = 0; i-- )

                {

                    temp[start - i] = array[start - i][indexs[start - i]];

                }

                list.add (temp);

            }

        }

        return list;

    }

 

    public static void main ( String[] args )

    {

        char[] a = { '中','国','有','个','人' };

        char[] b = { '中','国','有','个','人' };

        char[] c = { '中','国','有','个','人' };

        char[] d = { '中','国','有','个','人' };

        char[][] temp = { a, b, c, d };

        

        LinkedListchar[] list = new LinkedListchar[] ();

        recursionSub (list, temp.length, temp, 0, -1);

        for ( int i = 0; i  list.size (); i++ )

        {

            System.out.println (Arrays.toString (list.get (i)).replaceAll ("[\\[\\]\\,\\s]", ""));

        }

    }

}

怎么用java实现快速排序

package com.xinhua.test2;

public class Student {

int sno;

String name;

double chiness;

double math;

double english;

double three_sco;

double all_s;

public Student(int sno, String name, double chiness, double math, double english, double three_sco) {

this.sno = sno;

this.name = name;

this.chiness = chiness;

this.math = math;

this.english = english;

this.three_sco = three_sco;

}

@Override

public String toString() {

return "学号:" + sno + ", 名字:" + name + ", 语文成绩:" + chiness + ", 数学成绩:" + math + ", 英语成绩:"

+ english + "总成绩:"+(chiness+math+english+three_sco);

}

public static void main(String[] args) {

Student A=new Student(1, "张三", 118, 145, 114.5, 198);

Student B=new Student(2, "李四", 130,110.5,100,210);

Student C=new Student(3, "王五",142.5,120,87.5,245.5);

System.out.println("学生列表信息为:");

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

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

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

//

double a_scoAll=A.chiness+A.math+A.english+A.three_sco;

A.all_s=a_scoAll;

double b_scoAll=B.chiness+B.math+B.english+B.three_sco;

B.all_s=b_scoAll;

double c_sclAll=C.chiness+C.math+C.english+C.three_sco;

C.all_s=c_sclAll;

Student[] s_s={A,B,C};

System.out.println("按总成绩从大到小排序为");

Student temp;

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

for(int j=1;js_s.length-i;j++){

if(s_s[j-1].all_s s_s[j].all_s){

temp=s_s[j-1] ;

s_s[j-1] =s_s[j];

s_s[j]=temp;

}

}

}

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

System.out.println("第"+(i+1)+"名为:"+s_s[i].toString());

}

}

}

java实现排列组合输出

完成了一种实现,发给你参考下。

不过感觉应该还有更好的办法,有时间我会继续研究下.

import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

public class TestQiuhe {

    //集合a{1,2,3,5,7,10},输出不多于4个元素(不重复)的加和为22的组合。

    public static void main(String[] args) {

        int[] nums={1,2,3,5,7,10};

        int l = nums.length;

        Listint[] results=new ArrayListint[]();

        for(int i1=0;i1l;i1++){

            for(int i2=0;i2l;i2++){

                if(nums[i1]==22){

                    results.add(new int[]{nums[i1]});

                }

                if(i2!=i1){

                    if(nums[i1]+nums[i2]==22){

                        results.add(new int[]{nums[i1],nums[i2]});

                    }

                    for(int i3=0;i3l;i3++){

                        if(i3!=i1  i3!=i2){

                            if(nums[i1]+nums[i2]+nums[i3]==22){

                                results.add(new int[]{nums[i1],nums[i2],nums[i3]});

                            }

                            for(int i4=0;i4l;i4++){

                                if(i4!=i1  i4!= i2  i4!=i3){

                                    if(nums[i1]+nums[i2]+nums[i3]+nums[i4]==22){

                                        results.add(new int[]{nums[i1],nums[i2],nums[i3],nums[i4]});

                                    }

                                }

                            }

                        }

                    }

                }

            }

        }

        //去重

        SetString reSet=new HashSet();

        for(int[] r:results){

            Arrays.sort(r);

            reSet.add(Arrays.toString(r));

        }

        System.out.println("一共得到结果集:"+reSet.size());

        System.out.println(reSet);

    }

}

运行结果:

一共得到结果集:2

[[5, 7, 10], [2, 3, 7, 10]]

java实现排列的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java实现各种排序算法、java实现排列的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。