Java 非常非常粗糙的分类

Java 非常非常粗糙的分类,java,arrays,algorithm,sorting,Java,Arrays,Algorithm,Sorting,假设我们有一个数组(int[]m) 我需要整理它。。。结果必须是: 上半年的所有项目必须小于或等于下半年的任何项目 怎么做 Arrays.sort(array); for (int i : array) { System.out.println(i); } 根据您的情况,按升序排序是可以的。正如Karl在其评论中所提到的,该任务相当于中的一个划分步骤,但您必须首先找到样本中值并将其用作轴心元素 计算a可以使用O(n)操作进行计算,划分步骤也是线性的(O(n))

假设我们有一个数组(int[]m)

我需要整理它。。。结果必须是:

上半年的所有项目必须小于或等于下半年的任何项目

怎么做

   Arrays.sort(array);
    for (int i : array) {
      System.out.println(i);
    }

根据您的情况,按升序排序是可以的。

正如Karl在其评论中所提到的,该任务相当于中的一个划分步骤,但您必须首先找到样本中值并将其用作轴心元素

计算a可以使用O(n)操作进行计算,划分步骤也是线性的(O(n)),因此总体最坏情况性能仍然优于完全排序(O(n log(n))

算法如下(需要实现标准方法):

List List=new ArrayList();
增加(2);
增加(5);
增加第(1)款;
增加(15);
增加(55);
增加(23);
集合。排序(列表);
int length=list.size();
List list1=List.subList(0,长度/2);
List list2=列表。子列表(长度/2,长度);
收藏。洗牌(列表1);
收藏。洗牌(列表2);
List newList=newarraylist();
newList.addAll(列表1);
newList.addAll(列表2);
System.out.println(newList);

这就是您想要的吗?

这是家庭作业吗?听起来很像是您被要求实施快速排序,并且在“分区”方面遇到了问题步骤。你现在有没有尝试过编写代码?你有没有尝试过编写伪代码?顺便说一句,接受更多的答案不会有什么坏处,所以人们将来更可能会帮助你。不,这不是家庭作业。如果你觉得很简单,也许你可以解释一下如何做?@Karl,这不等于“分享步骤”除非您可以选择pivot元素,使其等于中间值。随机pivot(如快速排序所允许)将无法满足要求。@V先生:是的,但建议的解决方案以最简单的方式满足您的规格(您的代码最少)如果你真的想让排序变得粗糙,那么就这样做,然后在上半部分或下半部分交换几个随机元素:-)例如:51 4 10 19->4 10 5119@mr.瓦乔夫斯基:但完全排序的数组仍然满足您的要求,不是吗?如果您还需要其他东西,您应该指定它。我不喜欢这个答案-我确信,OP知道
数组
提供了
排序
方法,并且完全排序的数组满足了要求。在我看来,这比Mohamed的答案更糟糕。他没有要求在子列表中随机分布。我猜他想要的是比完全成熟的那种性能更好的东西!!!!!!不好的,假设,该数组包含许多项,您建议对该数组进行排序,而不是粗略排序?!完全排序比粗略排序需要更多的时间。@Vachovsky先生-现在我知道性能是一项要求-请编辑您的问题以添加澄清。
public int[] roughSort(int[] input) {
  int pivot = findMedian(input);
  int[] result = partition(input, pivot);
  return result;
}
List<Integer> list = new ArrayList<Integer>();

list.add(2);
list.add(5);
list.add(1);
list.add(15);
list.add(55);
list.add(23);

Collections.sort(list);

int length = list.size();

List<Integer> list1 = list.subList(0, length/2);
List<Integer> list2 = list.subList(length/2, length);

Collections.shuffle(list1);
Collections.shuffle(list2);

List<Integer> newList = new ArrayList<Integer>();
newList.addAll(list1);
newList.addAll(list2);

System.out.println(newList);