-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEnterToArrays.java
More file actions
118 lines (97 loc) · 6.21 KB
/
EnterToArrays.java
File metadata and controls
118 lines (97 loc) · 6.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class EnterToArrays {
int[] array;// dizimi sadece deklare ettim.
Random randomSayiUretici = new Random();// Random classından oluşturduğum nesne
Scanner input = new Scanner(System.in);
public void siralama() {
for (int i = 0; i < array.length; i++) {// bu dış döngü iç döngü eleman sayısı kadar olduğundan bütün syaılar
// büyükten küçüğe sıralanıyor
for (int j = 0; j < array.length - 1 - i; j++) {// bu iç döngü en büyük sayıyı bulup sona atıyor
if (array[j] > array[j + 1]) {
int temp = array[j]; // burada değişken değiştirme kullanılıyor
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(array));// burada da en son büyükten küçüğe görmek için yazdırıyorum.
}
public void rastgeleDiziElemaniOlusturma(int elemanSayisi) {
array = new int[elemanSayisi];// kullanıcının girdiği değer kadar elemanı olan bir dizi oluştruduk.
for (int i = 0; i < array.length; i++) {// dizideki tüm indexlere uğrayıp rastgele üretilmiş değerleri
// atıyor.
int randomSayi = randomSayiUretici.nextInt(elemanSayisi);/*
* random class'ı çağırıldığında default
* değer aralığında (0 ile 1) arasında
* değer üretiyor ama asla 1 olmyuor
* (maks:0.99...9)
* eleman sayısı ile çarptığımızda virgüllü
* bir sayı çıkar ancak int değer olarak
* ürettiğimizden virgüllü kısım atılıyor
* kısaca 0 ile eleman sayısının 1 eksiği
* arasında değerler geliyor.
*/
array[i] = randomSayi;// random olarak üretilen sayı
}
}
public void shuffle() {
for (int i = array.length - 1; i > 0; i--) {/*
* algoritmanın mantığı gereği dizinin sonuncu indexinden başlamam
* gerek.
* dizi uzunluğundan 1 çıkarınca dizinin sonuncu indexini
* buluyorum. Kısaca döngüye diyorum ki i sonuncu indexten 0.indexe
* birer birer azalarak gitsin
*/
int randomSayi = randomSayiUretici.nextInt(i + 1);/*
* random class'ı çağırıldığında default
* değer aralığında (0 ile 1) arasında
* değer üretiyor ama asla 1 olmuyor
* (maks:0.99...9)
* eleman sayısı ile çarptığımızda virgüllü
* bir sayı çıkar ancak int değer olarak
* ürettiğimizden virgüllü kısım atılıyor
* kısaca 0 ile eleman sayısının 1 eksiği (sonuncu index
* kadar)
* arasında değerler geliyor.
*/
System.out.println();
// System.out.println(" 0 1 2 3 4 5");
System.out.println(Arrays.toString(array));// her değişimden önce görmek istedğimden yazdırdım
int temp = array[i];// burada da klasik bir değişken değiştirme algoritması var
array[i] = array[randomSayi];
array[randomSayi] = temp;
}
}
public static void main(String[] args) {
EnterToArrays enterToArrays = new EnterToArrays();// class'ın nesnesini üretip hem class'taki verilere hem de
// oradaki metotlara ulaşıyoruz.
while (true) {
System.out.print("Kaç Elemanlı bir dizi istersiniz? ");
if (enterToArrays.input.hasNextInt()) {// kullanıcıdan alınan değerin sayısal bir değer olup olmadığını
// kontrol
// ediyor.
int elemanSayisi = enterToArrays.input.nextInt();
if (elemanSayisi <= 0) {
System.out.println("Negatif bir değer giremezsiniz.");
continue;
} else {
enterToArrays.rastgeleDiziElemaniOlusturma(elemanSayisi);
break;
}
} else {
System.out.println("Lütfen sayısal bir değer girin.");
enterToArrays.input.next();
continue;
}
}
System.out.println("öncesi: " + Arrays.toString(enterToArrays.array));
enterToArrays.shuffle();
System.out.println();
System.out.println("Sonrası(Shuffle): " + Arrays.toString(enterToArrays.array));
System.out.print("Sıralama Sonrası(Buble Sort): ");
enterToArrays.siralama();
enterToArrays.input.close();
}
}