「java实现排列」java实现各种排序算法
今天给各位分享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实现排列的信息别忘了在本站进行查找喔。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。