Java-如何根据单个int对数组进行排序
假设我有这样一个数组:Java-如何根据单个int对数组进行排序,java,sorting,Java,Sorting,假设我有这样一个数组: [9, 7, 13, 24, 2, 16, 3, 10] 我想根据int 9对数组进行排序,所有小于9的值都在左边,所有大于9的值都在右边,可以使用选择排序的版本吗 这里有点难懂你想要的应该是快速排序的一步 我进行了一些修改,以便您可以传递所需的轴作为参数: public static void main(String[] args) { int[] a = new int[]{9,7,13,24,2,16,3,10}; System.out.print
[9, 7, 13, 24, 2, 16, 3, 10]
我想根据int 9对数组进行排序,所有小于9的值都在左边,所有大于9的值都在右边,可以使用选择排序的版本吗
这里有点难懂你想要的应该是快速排序的一步 我进行了一些修改,以便您可以传递所需的轴作为参数:
public static void main(String[] args) {
int[] a = new int[]{9,7,13,24,2,16,3,10};
System.out.println(partition(a,9));//use value 9 as pivot
System.out.println(Arrays.toString(a));
}
private static int partition(int[] a, int pivot){
int pivotIndex = 0;
for(int i=0;i<a.length;i++){//find initial pivot Index
if(a[i]==pivot) {
pivotIndex = i;
break;
}
}
int low = 0;
int high = a.length-1;
while(low<high){
while(low<high&&a[high]>=pivot) high--;
a[pivotIndex] = a[high];
pivotIndex = high;
while(low<high&&a[low]<=pivot) low++;
a[pivotIndex] = a[low];
pivotIndex= low;
}
//Actual pivotIndex finded
a[pivotIndex] = pivot;
return pivotIndex;
}
困惑-您想让所有小于9的整数在其左侧,大于9的值在其右侧?这不只是一个常规的排序吗?我认为问题是所有元素的左边小于9,右边大于9。不存在在左/右元素之间排序的问题。这可能是一个一步[Quicksort]的问题。是的,我自己也在考虑更多的Quicksort,其中int 9是轴心,所有值都按pivot@Sean你还在为这个问题寻找解决方案吗?对于这个问题,我有一个简洁明了的解决方案。@Sean,请检查我的答案是否符合您的需要
3
[3, 7, 2, 9, 24, 16, 13, 10]