Arrays 重新排列整数数组
我需要在伪代码和java中实现以下内容 输入:整数数组 输出:重新排列阵列以具有以下内容: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的所有元
谢谢大家! 创建一个具有空间的数组以容纳所有元素。如果数字小于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包不这样做吗?