「java重排」数组去重排序java
本篇文章给大家谈谈java重排,以及数组去重排序java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java中如何将一个字符串数组按字典序重新排列?
import java.util.Arrays;
public class Test{
public static void mian(String[] args){
String sr[] = {"爪哇","汇编","计算机","键盘","鼠标"};
Arrays.sort(sr);
for(int i=0;isr.length;i++){
System.out.println(sr[i]);
}
}
}
楼主是这个吧?
引入:import java.util.Arrays;
方法:Arrays.sort(数组名);
可以实现对数组按字典顺序排序.....
java排序问题 一组偶数个数据,重排,使得前半部分和后半部分的和的乘积最大
public class MaoPao
{
public static void main(String args[])
{
int[] arr={2,1,3,4,6,5,7,8,9,0,10};
//N是数组的元素个数,这样无论多少个数,直接修改arr中的元素就行了,
//不需要调整循环次数
int N = arr.length;
int temp=0;
//冒泡排序:每次把最大的放到最后,N-i是因为第i次排序之后,
//数组arr的最后i个数已经是按照大小顺序的了,所以不需要再排序了
//比如第一次排序之后,最后一个数肯定是最大的,下一次只需要排前9个就行了。
for(int i=1;iN;++i)
{
for(int j=0;jN-i;++j)
{
//如果前面的数比后面的大,则不是按照顺序的,因此要交换
if(arr[j]arr[j+1])
{
temp=arr[j]; //交换2个数
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;iN;++i) //输出排序后的结果
{
System.out.print(arr[i]+" ");
}
}
}
重排九宫问题(用java实现)
import java.util.Arrays;
public class NineGridTest{
public static void main(String[] args){
//三行数据依次排列9个元素构造实例,空位填0,调用go方法获取答案。
NineGrid example=new NineGrid(new int[]{1,6,5,3,0,2,7,8,4});
int[] answer=example.go();
if(answer==null){
System.out.println("没有找到步骤");
}
else{
for(int i=0;ianswer.length;i++){
System.out.print(answer[i]);
}
System.out.println();
}
}
}
class NineGrid{
private static final int MAX_STEP=50;
private static final int[] right=new int[]{1,2,3,8,0,4,7,6,5};
private int vacant,length;
private int[] grids,answer;
public NineGrid(int[] grids){
if(grids.length!=9){
throw new IllegalArgumentException(String.format("缺少数据:%1$d(%2$d)",grids.length,9));
}
int i,j;
for(i=8;i=0;i--){
for(j=0;j9;j++){
if(grids[j]==i){
break;
}
}
if(j==9){
throw new IllegalArgumentException("无效的数字序列。缺少:"+i);
}
}
this.grids=grids;
answer=new int[50];
length=0;
}
public int[] go(){
for(vacant=0;vacant9grids[vacant]!=0;vacant++);
return nextStep(0)?Arrays.copyOf(answer,length):null;
}
private boolean OK(){
return Arrays.equals(grids,right);
}
private boolean nextStep(int step){
if(step==MAX_STEP){
return false;
}
int[] siblings=getSiblings(vacant);
for(int i=0;isiblings.length;i++){
if(step0grids[siblings[i]]==answer[step-1]){
continue;
}
grids[vacant]=grids[siblings[i]];
answer[step]=grids[vacant];
grids[siblings[i]]=0;
vacant^=siblings[i];
siblings[i]^=vacant;
vacant^=siblings[i];
if(OK()){
length=step+1;
return true;
}
else{
boolean result=nextStep(step+1);
if(result){
return true;
}
else{
grids[vacant]=grids[siblings[i]];
vacant=siblings[i];
grids[vacant]=0;
}
}
}
return false;
}
private int[] getSiblings(int position){
switch(position){
case 0:return new int[]{1,3};
case 1:return new int[]{0,2,4};
case 2:return new int[]{1,5};
case 3:return new int[]{0,4,6};
case 4:return new int[]{1,3,5,7};
case 5:return new int[]{2,4,8};
case 6:return new int[]{3,7};
case 7:return new int[]{4,6,8};
case 8:return new int[]{5,7};
default:return null;
}
}
}
//递归算法。超慢。。。。
关于java重排和数组去重排序java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。