кодесурса

Упражнения Java Array: упорядочить элементы заданного массива целых чисел, где все отрицательные целые числа появляются перед всеми положительными целыми числами

script1adsense2code
script1adsense3code

Java Array: упражнение 48 с решением

Напишите программу на Java, чтобы упорядочить элементы заданного массива целых чисел, где все отрицательные целые числа появляются перед всеми положительными целыми числами.

Иллюстрированная презентация:


Пример решения :

Java-код:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        int[] nums = {-4, 8, 6, -5, 6, -2, 1, 2, 3, -11};
		System.out.println("Original Array: "+Arrays.toString(nums)); 
        sort_nums(nums);
        System.out.println("New Array: "+Arrays.toString(nums)); 
    }
    public static void sort_nums(int[] nums){
        int pos_num = 0;
        int neg_num = 0;
        int i,j;
        int max = Integer.MIN_VALUE;
        for(i=0; i<nums.length; i++){
            if(nums[i]<0) neg_num++;
            else pos_num++;
            if(nums[i]>max) max = nums[i];
        }
        max++;
        if(neg_num==0 || pos_num == 0) return;
        i=0;
        j=1;
        while(true){
            while(i<=neg_num && nums[i]<0) i++;
            while(j<nums.length && nums[j]>=0) j++;
            if(i>neg_num || j>=nums.length) break;
            nums[i]+= max*(i+1);
            swap_nums(nums,i,j);
        }
        i = nums.length-1;
        while(i>=neg_num){
            int div = nums[i]/max;
            if(div == 0) i--;
            else{
                nums[i]%=max;
                swap_nums(nums,i,neg_num+div-2); 
            }
        }
    }
    private static void swap_nums(int[] nums, int i , int j){
        int t = nums[i];
        nums[i] = nums[j];
        nums[j] = t;
    }
}

Пример вывода:

                                                                              
Исходный массив: [-4, 8, 6, -5, 6, -2, 1, 2, 3, -11]
Новый массив: [-4, -5, -2, -11, 6, 6, 1, 2, 8, 3]

Блок - схема:

«Блок-схема:

Визуализация выполнения кода Java (Python Tutor):


Редактор кода Java:

Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Напишите программу на Java, чтобы найти число оборотов в данном повернутом отсортированном массиве целых чисел.
Далее: Напишите программу на Java, чтобы упорядочить элементы заданного массива целых чисел, где все положительные целые числа появляются перед всеми отрицательными целыми числами.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code