Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .DS_Store
Binary file not shown.
47 changes: 47 additions & 0 deletions problem-set/Sorted.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
44 changes: 44 additions & 0 deletions problem-set/Sorted.md
Original file line number Diff line number Diff line change
@@ -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` ერორს ამოგიგდებთ.

<br>

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");
}
}
```
5 changes: 4 additions & 1 deletion problem-set/problem-solutions.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,7 @@
* [კოდი](problem-set/Prime.java)
32. AllPrimes
* [ახსნა](problem-set/AllPrimes.md)
* [კოდი](problem-set/AllPrimes.java)
* [კოდი](problem-set/AllPrimes.java)
55. Sorted
* [ახსნა](problem-set/Sorted.md)
* [კოდი](problem-set/Sorted.java)