数组,java-特定于排序/动态部分

数组,java-特定于排序/动态部分,java,arrays,sorting,Java,Arrays,Sorting,我一直在对数组进行排序(当然,这是不允许使用方法的一部分) 带有随机生成数字的数组应进行排序和打印: 偶数(升序-奇数(降序) 发件人:830 281 380 162 679 587 944 143 940 862 546 730 致:162380 546 730 830 862 940 944-679 587 281 143 我成功地将偶数和赔率分开,并对偶数进行排序,但在排序赔率时遇到了困难 意识到我可能不是通过将两个不同的部分分开来做这件事的最有效的方法,但是如果你能指出问题所在,我会非常

我一直在对数组进行排序(当然,这是不允许使用方法的一部分)

带有随机生成数字的数组应进行排序和打印: 偶数(升序-奇数(降序)

发件人:830 281 380 162 679 587 944 143 940 862 546 730

致:162380 546 730 830 862 940 944-679 587 281 143

我成功地将偶数和赔率分开,并对偶数进行排序,但在排序赔率时遇到了困难

意识到我可能不是通过将两个不同的部分分开来做这件事的最有效的方法,但是如果你能指出问题所在,我会非常感激

这个想法是对奇数和偶数进行计数,并使用这些数字来知道循环排序在数组中的位置,但奇数部分失败了

关于frakencode的事很抱歉

int[] arr = new int[amountRandom];
        for (int i = 0; i < amountRandom; i++)
        {
            arr[i] = (int) (Math.random() * 1000); 
        }


int checkEvenOdd;
        int evenAmount = 0; 
        int oddAmount = 0;
        for(int i = 0; i < arr.length; i++)
        {
            checkEvenOdd = arr[i] % 2;

            if(checkEvenOdd == 0)
            {
                evenAmount++;
            }
            else
            {
                oddAmount++;
            }
        }

int arrLeft = 0;
        int arrRight;
        arrRight = arr.length - 1;

        while(arrLeft < arrRight) {
            while(arr[arrLeft] % 2 == 0 && arrLeft < arrRight) {
                arrLeft++;
            }
            while(arr[arrRight] % 2 != 0 && arrLeft < arrRight) {
                arrRight--;
            }
            if(arrLeft < arrRight) {
                int x = arr[arrLeft];
                arr[arrLeft] = arr[arrRight];
                arr[arrRight] = x;

                arrLeft++;
                arrRight--;
            }
        }

int i, j, minValue, minIndex, temp = 0;
    for (i = 0; i < evenAmount; i++) {
        minValue = arr[i];                      
        minIndex = i;
        for (j = i; j < evenAmount; j++) {  
            if (arr[j] < minValue) {
                minValue = arr[j];
                minIndex = j;
            }
        }
        if (minValue < arr[i]) {        
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }

int maxValue, maxIndex, temp2 = 0;
    **for (i = evenAmount; i < amountRandom; i++)** {
        maxValue = arr[i];                      
        maxIndex = i;
        for (j = i; j > oddAmount; j++) {   
            if (arr[j] > maxValue) {
                maxValue = arr[j];
                maxIndex = j;
                }
            }
            if (maxValue > arr[i]) {        
                temp2 = arr[i];
                arr[i] = arr[maxIndex];
                arr[maxIndex] = temp2;
                }
            }
int[]arr=newint[amontrandom];
for(int i=0;ioddAmount;j++){
如果(arr[j]>maxValue){
最大值=arr[j];
maxIndex=j;
}
}
如果(maxValue>arr[i]){
temp2=arr[i];
arr[i]=arr[maxIndex];
arr[maxIndex]=temp2;
}
}

在这里查看各种各样的


无论如何,您不必硬编码排序算法,因为Java有自己的预制算法,您可以使用:

欢迎使用堆栈溢出。请阅读,访问,尤其是阅读。强烈建议不要回答只包含指向外部资源的链接的问题,因为链接最终会变差(404)使你的答案毫无用处。此外,如果你从其他网站复制任何内容到你的答案中,你需要对来源进行属性化。感谢你的回答。很遗憾,参加了一门课程,我们不允许使用这些方法。感谢你链接到排序算法,我看到了它们。我的问题是应用程序。特别是如何仅循环奇数的最后一部分:for(i=evenmount;i