未排序的数组和整数k,创建一个方法,重新排列数组中的元素,使所有小于或等于k的元素出现在任何大于k的元素之前。
这是我的代码,它不起作用
public class SmallerFirst
{
public int[] sort(int[] a, int k)
{
if(a.length == 1)
{
return a;
}
if(a.length == 0)
{
return a;
}
else
{
int last = (a.length-1);
for(int pos=0; pos<a.length; pos++)
{
for(int x=1;x>0;x++)
{
if(last == 0)
{
break;
}
if(a[pos] > k)
{
swap(a,pos,last); last--; continue;
}
else
{
break;
}
}
}
return a;
}
}
public void swap(int[] a,int p1,int p2)
{
int temp = 0;
temp = a[p2];
a[p2] = a [p1];
a[p1]=temp;
}
}
答案 0 :(得分:0)
Arrays.sort(yourIntArray)
将是明显的选择。
答案 1 :(得分:0)
这应该做你想要的事情
public static void sort(int[] a, int k) {
if(a.length > 1) {
int last = (a.length-1),
first = 0;
while(last > first) {
if(a[first] <= k) first++;
else if(a[last] > k) last--;
else swap(a, first, last);
}
}
}
答案 2 :(得分:0)
重新排列数组中的元素,使所有元素小于或 等于k来自任何大于k的元素。
Arrays.sort()
非常方便,但不必要地将O(n)
问题转变为O(nlogn)
问题O(n)
和空格O(n)
,也就是说,您准备一个空数组,大小与输入数组相同,然后循环输入数组,如果{{1将它从左边放入空数组,否则从右侧放入。element <= k
和空间O(n)
完成,(就地重新定位),这样的事情可能会给你结果:(O(1)
将是a
数组,int[]
是问题中的k
k