Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 重新排列整数数组_Arrays_Algorithm_Sorting_Pseudocode - Fatal编程技术网

Arrays 重新排列整数数组

Arrays 重新排列整数数组,arrays,algorithm,sorting,pseudocode,Arrays,Algorithm,Sorting,Pseudocode,我需要在伪代码和java中实现以下内容 输入:整数数组 输出:重新排列阵列以具有以下内容: 假设原始数组中的第一个元素的值为x 在新数组中,假设x位于位置I,即data[I]=x。然后,数据[j]I。这意味着x“左侧”的所有值都小于或等于x,“右侧”的所有值都大于x 一个例子如下:假设数组的元素的初始顺序为:4,3,9,2,7,6,5。应用算法后,应该得到:3,2,4,5,9,7,6。也就是说,最左侧的元素4位于结果数组中,因此小于4(2和3)的所有元素都位于其左侧(无特定顺序),大于4的所有元

我需要在伪代码和java中实现以下内容

输入:整数数组

输出:重新排列阵列以具有以下内容:

  • 假设原始数组中的第一个元素的值为x
  • 在新数组中,假设x位于位置I,即data[I]=x。然后,数据[j]I。这意味着x“左侧”的所有值都小于或等于x,“右侧”的所有值都大于x
  • 一个例子如下:假设数组的元素的初始顺序为:4,3,9,2,7,6,5。应用算法后,应该得到:3,2,4,5,9,7,6。也就是说,最左侧的元素4位于结果数组中,因此小于4(2和3)的所有元素都位于其左侧(无特定顺序),大于4的所有元素都位于其右侧(无特定顺序)
  • 该算法不需要空间,只需在O(n)时间内求解

    因此,我的印象是,泡沫排序在这里是最好的

    在这种情况下,交换算法不是最好的选择,我想获得一些关于其他方法的反馈,这些方法可以在这里实现


    谢谢大家!

    创建一个具有空间的数组以容纳所有元素。如果数字小于x,则将其放在数组的开头,如果数字大于x,则将其放在末尾。若数字等于x,那个么忽略它,继续前进。最后,用等于x的值填充剩余的点。

    创建一个具有空间的数组以容纳所有元素。如果数字小于x,则将其放在数组的开头,如果数字大于x,则将其放在末尾。若数字等于x,那个么忽略它,继续前进。最后,用等于x的值填充剩余的点。

    int[] numbers = {4, 9, 1, 3, 2, 8, 7, 0, 6, 5};
    
    
    
    System.out.println(Arrays.toString(numbers));
    
    java.util.Arrays.sort(numbers);
    System.out.println(Arrays.toString(numbers));
    
    输出:

    Before sorting: [4, 9, 1, 3, 2, 8, 7, 0, 6, 5]
    After sorting: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    使用整数4作为参考点,将满足列出的所有条件。本机排序算法将更快。但如果你需要控制局面,试试第一个答案


    要得到4的所有剩余值,只需找到4的索引,比如i[n],并返回所有低于i[n]的索引。要获得4的正确数字,请找到4的索引,即i[n],并获得高于i[n]的索引,而i[n]小于[zero-based array]的数组长度。

    int[] numbers = {4, 9, 1, 3, 2, 8, 7, 0, 6, 5};
    
    
    
    System.out.println(Arrays.toString(numbers));
    
    java.util.Arrays.sort(numbers);
    System.out.println(Arrays.toString(numbers));
    
    输出:

    Before sorting: [4, 9, 1, 3, 2, 8, 7, 0, 6, 5]
    After sorting: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    使用整数4作为参考点,将满足列出的所有条件。本机排序算法将更快。但如果你需要控制局面,试试第一个答案


    要得到4的所有剩余值,只需找到4的索引,比如i[n],并返回所有低于i[n]的索引。要获得4的正确数字,请定位4的索引,即i[n],并获得高于i[n]的索引,而i[n]小于[zero-based array]的数组长度。

    鉴于OP的小数据集,冒泡排序可以工作,但“…当n较大时,冒泡排序不是一种实用的排序算法”(请参阅)。一个有效的算法是:

    …该算法采用O(n logn)比较对n个项目进行排序

    下面的QuickSort实现是我从中获得的一个fork,并经过修改以包括数字的OP数组和数组的值上的代码轴,如下所示:

    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    class Ideone
    {
    
    
        public static void main (String[] args) throws java.lang.Exception
        {
            int b[] = { 4, 3, 9, 2, 7, 6, 5 };
            sort( b, 0, b.length - 1 );
            System.out.println( Arrays.toString( b ) );
        }
    
        static void sort(int a[], int left, int right)   {  
           if (left < right){
            int i=left, j=right, tmp;    
            int v = a[left]; //pivot
    
            do {
                while( a[i] < v)
                  i++;
                while(a[j]>v) 
                  j--;
    
                if( i <= j){            
                   tmp = a[i];
                   a[i] = a[j];
                   a[j] = tmp;
                   i++;            
                   j--;
                 }
           }  while( i <=  j );        
    
            if( left < j )  sort( a, left, j );
            if( i < right ) sort(a,i,right);
          }
       }
    }
    
    import java.util.*;
    导入java.lang.*;
    导入java.io.*;
    表意文字
    {
    公共静态void main(字符串[]args)引发java.lang.Exception
    {
    int b[]={4,3,9,2,7,6,5};
    排序(b,0,b.length-1);
    System.out.println(Arrays.toString(b));
    }
    静态空排序(int a[],int left,int right){
    if(左<右){
    int i=左,j=右,tmp;
    int v=a[左];//枢轴
    做{
    while(a[i]v)
    j--;
    
    如果(i给定OP的小数据集,则气泡排序可以工作,但“…当n较大时,气泡排序不是一种实用的排序算法”(请参阅)。一种有效的算法是:

    …该算法采用O(n logn)比较对n个项目进行排序

    下面的QuickSort实现是我从中获得的一个fork,并经过修改以包括数字的OP数组和数组的值上的代码轴,如下所示:

    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    class Ideone
    {
    
    
        public static void main (String[] args) throws java.lang.Exception
        {
            int b[] = { 4, 3, 9, 2, 7, 6, 5 };
            sort( b, 0, b.length - 1 );
            System.out.println( Arrays.toString( b ) );
        }
    
        static void sort(int a[], int left, int right)   {  
           if (left < right){
            int i=left, j=right, tmp;    
            int v = a[left]; //pivot
    
            do {
                while( a[i] < v)
                  i++;
                while(a[j]>v) 
                  j--;
    
                if( i <= j){            
                   tmp = a[i];
                   a[i] = a[j];
                   a[j] = tmp;
                   i++;            
                   j--;
                 }
           }  while( i <=  j );        
    
            if( left < j )  sort( a, left, j );
            if( i < right ) sort(a,i,right);
          }
       }
    }
    
    import java.util.*;
    导入java.lang.*;
    导入java.io.*;
    表意文字
    {
    公共静态void main(字符串[]args)引发java.lang.Exception
    {
    int b[]={4,3,9,2,7,6,5};
    排序(b,0,b.length-1);
    System.out.println(Arrays.toString(b));
    }
    静态空排序(int a[],int left,int right){
    if(左<右){
    int i=左,j=右,tmp;
    int v=a[左];//枢轴
    做{
    while(a[i]v)
    j--;
    
    如果(i)google排序算法我可能缺少一个重要点java.util.array包不这样做吗?google排序算法我可能缺少一个重要点java.util.array包不这样做吗?