ຈັດລຽງລໍາດັບອີກເທື່ອ ໜຶ່ງ ເຖິງແມ່ນວ່າອົງປະກອບດັດສະນີມີຂະ ໜາດ ນ້ອຍກວ່າແລະອົງປະກອບດັດສະນີກໍ່ໃຫຍ່ກວ່າ


ລະດັບຄວາມຫຍຸ້ງຍາກ Easy
ຖາມເລື້ອຍໆໃນ Avalara ລະບົບ Epic ສີ່ພັນ ຟລີໂຄ້ດ Tesla
Array

ຖະແຫຼງການບັນຫາ

ທ່ານໄດ້ໃຫ້ array of integers. ບັນຫາ "Rearrange array ເຊັ່ນວ່າອົງປະກອບດັດສະນີມີຂະ ໜາດ ນ້ອຍກວ່າແລະອົງປະກອບດັດສະນີທີ່ໃຫຍ່ກວ່າ" ຮຽກຮ້ອງໃຫ້ຈັດແຈງແຖວໃນລັກສະນະດັ່ງກ່າວເຖິງແມ່ນວ່າອົງປະກອບດັດສະນີຄວນຈະນ້ອຍກວ່າອົງປະກອບດັດສະນີຄີກຢູ່ໃນ array ທີ່ຖືກດັດແກ້.

ຍົກຕົວຢ່າງ

arr[]={ 2,5,7,1,3,4 }
2 7 1 5 3 4

ຄຳ ອະທິບາຍ: 2 ຢູ່ໃນ ຕຳ ແໜ່ງ ດັດສະນີ (0 ດັດຊະນີ) ສະນັ້ນມັນນ້ອຍກວ່າອົງປະກອບດັດສະນີຕໍ່ໄປ, 1 ນ້ອຍກວ່າ 5 ເຊິ່ງຢູ່ໃນອົງປະກອບດັດສະນີຄີກ.

ສູດການຄິດໄລ່ເພື່ອຈັດແຈງແຖວເຊັ່ນວ່າອົງປະກອບທີ່ຖືກດັດສະນີມີຂະ ໜາດ ນ້ອຍກວ່າດັດສະນີຄີກ

1. Traverse the array from 0 to n-1(less than the length of the array).
2. Check if the index is even and the next element is smaller than the current element then swap both of the numbers.
3. Check if the index is odd and the next element is greater than the current element, then swap both of the numbers.
4. Print the array.

ຄໍາອະທິບາຍ

ຕາມລວງກວ້າງຂອງລວງຍາວ n. ພວກເຮົາຖືກຮ້ອງຂໍໃຫ້ຈັດແຈງແຖວໃນແບບດັ່ງກ່າວເຖິງແມ່ນວ່າອົງປະກອບດັດສະນີຈະນ້ອຍກວ່າອົງປະກອບດັດສະນີຄີກ. ພວກເຮົາຈະ ດຳ ເນີນການນີ້ໂດຍການແລກປ່ຽນອົງປະກອບຖ້າເງື່ອນໄຂບໍ່ພໍໃຈ. ຫນ້າທໍາອິດ, ພວກເຮົາຕ້ອງກວດເບິ່ງປະເພດຂອງມັນບໍ່ວ່າມັນຈະເປັນຫຼືບໍ່ເປັນຕາຫຼັງຈາກນັ້ນພວກເຮົາຕ້ອງໄດ້ດັດແປງ array.

ລອກລວງອາເລຈາກ 0 ຫານ້ອຍກ່ວາ n-1 ບ່ອນທີ່ n ແມ່ນຄວາມຍາວຂອງອາເລ. ເອົາສິ່ງ ໜຶ່ງ ທີ່ນ້ອຍກວ່າ n-1 ຂຶ້ນໄປຕາມເສັ້ນທາງເພາະພວກເຮົາຈະປຽບທຽບມັນກັບອົງປະກອບຕໍ່ໄປຖ້າມີໃນອາເລ. ດັ່ງນັ້ນພວກເຮົາຕ້ອງໄດ້ອອກຈາກສະຖານທີ່ນັ້ນເພື່ອປຽບທຽບໃສ່ບ່ອນອື່ນມັນຈະຜ່ານຂໍ້ຜິດພາດ. ຖ້າພວກເຮົາ loop ຈົນກ່ວາ n, ຫຼັງຈາກນັ້ນມັນຈະຕີດັດຊະນີທີ່ບໍ່ມີຢູ່ໃນຂບວນການ. ນັ້ນແມ່ນເຫດຜົນທີ່ພວກເຮົາເອົາ 0 ລົງຕ່ ຳ ກ່ວາ n - 1 ເສັ້ນທາງ.

ພວກເຮົາຈະຂ້າມແຖວແລະກວດເບິ່ງແຕ່ລະຄ່າຂອງ 'i' ແມ່ນວ່າມັນແມ່ນແຕ່ຫຼືຄີກຖ້າມັນແມ່ນແຕ່ແລະຍັງ array [i] ແມ່ນໃຫຍ່ກວ່າອົງປະກອບຕໍ່ໄປ. ມັນ ໝາຍ ຄວາມວ່າ ຕຳ ແໜ່ງ ອົງປະກອບຕໍ່ໄປທີ່ຂ້ອຍແມ່ນຄີກແນ່ນອນແລະອົງປະກອບ ຕຳ ແໜ່ງ ທີ່ຄ້າງຄາແມ່ນ ໜ້ອຍ ກວ່າອົງປະກອບທີ່ວາງໄວ້. ດັ່ງນັ້ນພວກເຮົາຈະແລກປ່ຽນອົງປະກອບດັ່ງທີ່ arr [i] ແມ່ນປັດຈຸບັນແມ່ນແຕ່ປັດຈຸບັນແລະມາຮອດ [i + 1] ແມ່ນອົງປະກອບທີ່ຖືກຈັດອັນດັບຕໍ່ໄປ.

ດຽວນີ້ພວກເຮົາກວດເບິ່ງວ່າມູນຄ່າຂອງ 'i' ຄີກຫລືຍັງຖ້າວ່າຄ່າທີ່ຢູ່ໃນດັດຊະນີນີ້ນ້ອຍກວ່າອົງປະກອບທີ່ຜ່ານມາແລ້ວພວກເຮົາກໍ່ຈະແລກປ່ຽນຄ່າຕ່າງໆຢູ່ໃນ array. ຫຼັງຈາກແລກປ່ຽນຄ່າທັງ ໝົດ ທີ່ເປັນໄປໄດ້, ອາເລທີ່ຈັດຕັ້ງຂຶ້ນຈະເປັນຜົນສຸດທ້າຍແລະຕ້ອງການ.

ຈັດລຽງລໍາດັບອີກເທື່ອ ໜຶ່ງ ເຖິງແມ່ນວ່າອົງປະກອບດັດສະນີມີຂະ ໜາດ ນ້ອຍກວ່າແລະອົງປະກອບດັດສະນີກໍ່ໃຫຍ່ກວ່າ

ລະຫັດ

ລະຫັດ C ++ ເພື່ອຈັດແຈງອາເລເຊັ່ນວ່າແມ້ແຕ່ອົງປະກອບທີ່ຖືກດັດສະນີຈະນ້ອຍກວ່າດັດສະນີຄີກ

#include <iostream>
using namespace std;

void evenOddComparison (int* arr, int n)
{
    for (int i = 0; i < n - 1; i++)
    {
        if (i % 2 == 0 && arr[i] > arr[i + 1])
            swap(arr[i], arr[i + 1]);

        if (i % 2 != 0 && arr[i] < arr[i + 1])
            swap(arr[i], arr[i + 1]);
    }
}

void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
        cout << arr[i] << " ";

    cout << endl;
}

int main()
{
    int arr[] = {  2,5,7,1,3,4  };
    int n = sizeof(arr) / sizeof(arr[0]);

    evenOddComparison (arr, n);

    printArray(arr, n);

    return 0;
}
2 7 1 5 3 4

ລະຫັດ Java ເພື່ອຈັດແຈງອາເລເຊັ່ນວ່າແມ້ແຕ່ອົງປະກອບທີ່ຖືກດັດສະນີຈະນ້ອຍກວ່າດັດສະນີຄີກ

class rearrangeArray
{
    public static void evenOddComparison(int arr[], int n)
    {

        int temp;
        for (int i = 0; i < n - 1; i++)
        {
            if (i % 2 == 0 && arr[i] > arr[i + 1])
            {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
            if (i % 2 != 0 && arr[i] < arr[i + 1])
            {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
    }
    public static void printArray(int arr[], int size)
    {
        for (int i = 0; i < size; i++)
            System.out.print(arr[i] + " ");

        System.out.println();
    }
    public static void main(String[] args)
    {
        int arr[] = { 2,5,7,1,3,4 };
        int n = arr.length;

        evenOddComparison (arr, n);

        printArray(arr, n);
    }
}
2 7 1 5 3 4

ການວິເຄາະຄວາມສັບສົນ

ຄວາມສັບສົນເວລາ

O (n) ບ່ອນທີ່ "n" ແມ່ນ ຈຳ ນວນຂອງອົງປະກອບໃນແຖວ. ພວກເຮົາຫາກໍ່ຜ່ານແຖວແລະໄດ້ປ່ຽນສ່ວນປະກອບດັ່ງນັ້ນຄວາມສັບສົນຂອງເວລາແມ່ນເປັນເສັ້ນ.

ຄວາມສັບສົນໃນອະວະກາດ

O (1) ເນື່ອງຈາກວ່າພວກເຮົາໄດ້ໃຊ້ພື້ນທີ່ຄົງທີ່ແຕ່ວ່າໂປແກມທັງ ໝົດ ໃຊ້ເວລາ O (n) ພື້ນທີ່.