2012-02-20 72 views
0

我有一个数组:如何数组排序开始的特定位置

int[] array = {1,2,3,4,5,6,7,8,9,10}; 

我想挑选分拣的起点。如果我选择6输出应该是

(6,7,8,9,10,1,2,3,4,5) 
+3

你可以给你的问题的另一个例子输入/输出,例如,如果什么输入:'INT []数组= {10 ,9,8,7,6,5,4,3,2,1};'和起点是'6'? – ggreiner 2012-02-20 16:19:03

+5

你可以定义更多一点吗?如果数组是“{3,7,2,8,4,6,1,0,5,9}”,并且起点是4,该怎么办?结果应该是什么? – 2012-02-20 16:20:17

+0

这是功课吗? – 2012-02-20 16:20:27

回答

5

我会去的两个阶段:

  1. 分拣出指数一(正常)
  2. 其旋转至所需的索引
0

如果您尝试根据您在代码中指定的数组索引位置进行排序,则可以使用下面的代码。

import java.util.Arrays; 

公共类IndexBasedSort {

public static int[] getFirstIndexedArray(int[] originalArray, int arrayIndex) { 
    int[] firstIndexedArray = new int[arrayIndex]; 
    for(int i=0;i<arrayIndex;i++){ 
     firstIndexedArray[i] = originalArray[i]; 
    } 
    return firstIndexedArray; 
} 

public static int[] getNextIndexedArray(int[] originalArray, int arrayIndex) { 
    int[] nextIndexedArray = new int[(originalArray.length - arrayIndex)]; 
    for(int i=0;i<nextIndexedArray.length;i++) { 
     nextIndexedArray[i] = originalArray[i+arrayIndex]; 
    } 
    return nextIndexedArray; 
} 

public static int[] sortArrayElements(int[] arrayElements) { 
    Arrays.sort(arrayElements); 
    return arrayElements; 
} 

public static int[] joinArrayElements(int[] firstArray, int[] nextArray) { 
    int[] joinedArray = new int[(firstArray.length + nextArray.length)]; 
    for(int i=0;i<firstArray.length;i++) { 
     joinedArray[i] = firstArray[i]; 
    } 
    for(int i=0;i<nextArray.length;i++) { 
     joinedArray[i+firstArray.length] = nextArray[i]; 
    } 
    return joinedArray; 
} 

public static void printArrayElements(int[] arrayElements) { 
    System.out.print("Sorted Array: "); 
    for(int i=0;i<arrayElements.length;i++) { 
     System.out.print(arrayElements[i]+", "); 
    } 
} 

public static void run(int[] originalArray, int arrayIndex){ 
    printArrayElements(joinArrayElements(sortArrayElements(getFirstIndexedArray 
      (originalArray, arrayIndex)), sortArrayElements(getNextIndexedArray(
        originalArray, arrayIndex)))); 
} 

public static void main(String[] args) { 
    int[] originalArray = {10,9,8,7,6,5,4,3,2,1}; 
    int arrayIndex = 6; 
    run(originalArray, arrayIndex-1); 
} 

}