diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index c0b533c..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/problem-set/Sorted.java b/problem-set/Sorted.java new file mode 100644 index 0000000..adef325 --- /dev/null +++ b/problem-set/Sorted.java @@ -0,0 +1,47 @@ +/* + * File: Sorted.java + */ + +import acm.program.*; + +public class Sorted extends ConsoleProgram { + + public void run() { + /** + * Reads number of input-numbers, creates array of that size and write + * every number in it + */ + int n = readInt(); + + int numbers[] = new int[n]; + for (int i = 0; i < n; i++) { + numbers[i] = readInt(); + } + + // Prints the answer + if (isSorted(numbers)) { + println("sorted"); + } else { + println("not sorted"); + } + } + + /** + * Pre Condition - input numbers are already in numbers array + * + * Post Condition - tells us if the array is sorted or not + * + * @param numbers + * array of int's + * @return boolean, true if array is sorted, otherwise false + */ + private boolean isSorted(int numbers[]) { + for (int i = 1; i < numbers.length; i++) { + if (numbers[i] < numbers[i - 1]) { + return false; + } + } + return true; + } + +} diff --git a/problem-set/Sorted.md b/problem-set/Sorted.md new file mode 100644 index 0000000..48ef7e7 --- /dev/null +++ b/problem-set/Sorted.md @@ -0,0 +1,44 @@ +$\text{\color{silver} პრობლემა:}$ + +კონსოლიდან შეგყვავს n და შემდეგ n ცალი მთელი რიცხვი, გაარკვიეთ შეყვანილი რიცხვები +არის თუ არა ზრდადობით დალაგებული. თუკი არის დაბეჭდეთ “sorted” თუ არა მაშინ +დაბეჭდეთ “not sorted”. + + +$\text{\color{silver} პრობლემის ამოხსნის გზები:}$ + + +1. წავიკითხოთ პირველი რიცხვი n, რომელიც აღნიშნავს შემომავალი რიცხვების რაოდენობას. შევქმნათ n ზომის int-ების მასივი, რომელშიც 0-დან n-1-მდე ჩავწერთ შემომავალ რიცხვებს. ამის შემდგომ შეგვეძლება მოცემულ მასივს `for` ციკლით გადავუყვეთ 1-დან n-მდე და ვნახოთ სრულდება თუ არა ზრდადობით დალაგებულობის პირობა. მასივი ზრდადობითაა დალაგებული თუ სრულდება შემდეგი პირობა $\forall\ a;i \ | \ 1\le i < n \implies a[i-1] \le a[i]$. შესაბამისად, თუ ეს პირობა დაირღვა რომელიმე i-სთვის, მასივი არაა დალაგებული. + +$\scriptsize \it იხ. \ კოდი \ Sorted.java \ ფაილში.$ + +$\text{\color{#CD5C5C} შენიშვნა}$: ყურადღება მიაქციეთ ინდექსებს, რადგან თუ შეგეშლებათ, `ArrayIndexOutOfBoundsException` ერორს ამოგიგდებთ. + +
+ +2. ასევე შეგვიძლია მასივის შექმნის გარეშე გავაკეთოთ იგივე. თუ ზემოთ მოცემულ ზრდადობით დალაგებულობის ფორმალურ განმარტებას დავუკვირდებით, ყოველთვის ორი მეზობელი წევრის შედარება გვიწევს. შესაბამისად, ორი ცვლადი რომ გვქონდეს, `prev` და `next`, მხოლოდ მათი შედარება მოგვიწევს ყოველჯერზე. თავიდან ხელით მოგვიწევს პირველი რიცხვის prev-ად შეყვანა. ამის შემდეგ კი `for` ციკლით გადავუყვებით ჩვეულებრივ. შესაბამისად მეხსიერება დაიზოგება. + +```Java +public void run(){ + int n = readInt(); + + int prev = readInt(); + int next = 0; + boolean isSorted = true; + + for(int i = 0; i < n-1; i++){ + next = readInt(); + if(prev > next) { + isSorted = false; + } + prev = next; + } + + // Prints the answer + if (isSorted) { + println("sorted"); + } else { + println("not sorted"); + } +} +``` \ No newline at end of file diff --git a/problem-set/problem-solutions.md b/problem-set/problem-solutions.md index 80ced21..1ff457f 100644 --- a/problem-set/problem-solutions.md +++ b/problem-set/problem-solutions.md @@ -95,4 +95,7 @@ * [კოდი](problem-set/Prime.java) 32. AllPrimes * [ახსნა](problem-set/AllPrimes.md) - * [კოდი](problem-set/AllPrimes.java) \ No newline at end of file + * [კოდი](problem-set/AllPrimes.java) +55. Sorted + * [ახსნა](problem-set/Sorted.md) + * [კოდი](problem-set/Sorted.java) \ No newline at end of file