Hocam, 44 yasindayim, bilgisayar ogrenmeye basliyorum. Emeginize saglik, oz, yuksek kaliteli bilgi veriyorsunuz. Big O nosyonunuz log n:) Hem cok tesekkur ediyor, hem de tebrik ediyorum.
3:00 'da n'inci eleman olmadığı için n-1'e kadar gidiyor demişsiniz sanırım dikkatsizlik oldu orada. Zaten n-1'inci elemanı da dahil etmiyor o for döngüsü. Bunun sebebi de o for döngüsünün kıyaslamadaki elemanlardan birini seçerken; içindeki for döngüsünün, ilk for döngüsünün seçtiği elemanla kıyaslanacak elementi seçmesi. Yani zaten dıştaki for i=n-2 eşitliği için çalıştığında tüm dizi sort olmuş oluyor. Bunun haricinde içteki for j=i değil de j=i+1 ile başlamalı diye düşünüyorum. Çünkü j=i olduğu durumda kendi kendisiyle kıyaslama yapıyor sayıyı. Bir yanlışım varsa lütfen düzeltin. Video için teşekkürler.
@@bayburtcakr time complexity ifadesi değişmeyecek ama üstteki for 1 milyar kere dönecekse 1 milyar kere anlamı olmayan bir kıyas yapmış olacaksın. Ayrıca kodu okurken anlamsız şey görünce neden böyle yapmış acaba bir nedeni olabilir mi diye düşündürür başka bir geliştiriciyi. Bu sebeple istemeyiz.
python kodu -- kac defa yer degistirme islemi yaptigi ve ne kadar zaman gectigini de hesaplayacak sekilde. import time counter = 0 start = time.time() for j in range(len(a)-1): #print('i----',j) for i in range(len(a)-1): #print('j',i) if a[i]>a[i+1]: #print('ilk',a[i]) counter =counter+1 x = a[i] a[i] = a[i+1] a[i+1] = x #print('son',a[i]) else: pass end = time.time() print(end-start)
hocam worst case için tersten sortlanmış hali olur demişsiniz ancak, mantıken bakıldıgında her zaman listedeki o ana kadar sortlamadığı tüm elemanlara bakıp da en kücük elemanı secmesi gerekmiyor mu? Yani 1 en başta da olsa en sonda da olsa, 1 i bulduktan sonra da listeyi tamamen gezip 1 den kücük eleman var mı diye bakması gerekmiyor mu? Tesekkürler
yer değiştirme (swap) işlemi yapıldığı için. Bakın şöyle düşünün, dizideki en küçük elemanı buluyorsunuz (bu içerideki döngü ve n'e kadar gidiyor, orada sorun yaşamadığınızı düşünüyorum). Sonra bulduğumuz en küçük elemanı sıradaki elemanla değiştiriyoruz. Şimdi n elemanlı bir dizide bu işi yaparsanız, n. elemana bakmanız gerekmez çünkü zaten en büyük olan eleman n. eleman olarak dizide duruyordur. Daha basit olarak şöyle anlatayım, 1 elemanlı bir dizide en küçük eleman kendisidir, bu diziye en küçük eleman kaç diye bakmanıza gerek yoktur. n-1 eleman için sıraladıktan sonra son kalan n. elemana bakamanıza gerek yok çünkü zaten orada tek eleman kalmış oluyor. Umarım faydası olur. Başarılar
Bu mantık bubble sort için de geçerli fakat insertion için ise son elemana da bakılması gerektiği için geçerli değil, insertion sortta n olması gerek, bubble ise aynı mantık değil mi?
Video'da Java versiyonu gösterilen kodun C ile main içinde yazılmış hali aşağıdadır: Sorum şöyle: Bu kod ile 5,3,1,4,6,2 dizisini sıralatmaya çalıştığımda çıktısı : 2,1,3,4,5,6 oluyor. Bunun yanında diziyi 6,5,4,3,2,1 olarak ters sıralı yaptığımda çıktısı doğru oluyor : 1,2,3,4,5,6. Bu videodaki kodda hata mı var acaba ?iç döngüyü j=i+1 yapınca da durum değişmiyor. int main(void) { int a[]={5,3,1,4,6,2}; int i,j,enkucuk,temp; int n = sizeof(a)/sizeof(a[0]); for(i=0;i
int main() { int i, j, temp, size, a[] = {5,3,1,4,6,2}; size = sizeof(a)/sizeof(a[0]); for (i=0; i < size - 1; i++) { for (j = i + 1; j < size ; j++) { if (a[j]
Hocam, 44 yasindayim, bilgisayar ogrenmeye basliyorum. Emeginize saglik, oz, yuksek kaliteli bilgi veriyorsunuz. Big O nosyonunuz log n:) Hem cok tesekkur ediyor, hem de tebrik ediyorum.
abi naptın çok merak ettim çalışıyon mu
Hocam Allah sizi başımızdan eksik etmesin. [A]min; :)
efsane anlatım hocam hayran kaldim helal gercekten muazzsmsiniz
3:00 'da n'inci eleman olmadığı için n-1'e kadar gidiyor demişsiniz sanırım dikkatsizlik oldu orada. Zaten n-1'inci elemanı da dahil etmiyor o for döngüsü. Bunun sebebi de o for döngüsünün kıyaslamadaki elemanlardan birini seçerken; içindeki for döngüsünün, ilk for döngüsünün seçtiği elemanla kıyaslanacak elementi seçmesi. Yani zaten dıştaki for i=n-2 eşitliği için çalıştığında tüm dizi sort olmuş oluyor.
Bunun haricinde içteki for j=i değil de j=i+1 ile başlamalı diye düşünüyorum. Çünkü j=i olduğu durumda kendi kendisiyle kıyaslama yapıyor sayıyı.
Bir yanlışım varsa lütfen düzeltin.
Video için teşekkürler.
j=i+1 olsa da ayni complexity ile çalışıyor bir şey fark etmiyor.
@@bayburtcakr time complexity ifadesi değişmeyecek ama üstteki for 1 milyar kere dönecekse 1 milyar kere anlamı olmayan bir kıyas yapmış olacaksın. Ayrıca kodu okurken anlamsız şey görünce neden böyle yapmış acaba bir nedeni olabilir mi diye düşündürür başka bir geliştiriciyi. Bu sebeple istemeyiz.
@@batuhanbulut153 burda algoritma öğreniyoruz yazılım mühendisliği yapmıyoruz 😂
teşekkürler
python kodu -- kac defa yer degistirme islemi yaptigi ve ne kadar zaman gectigini de hesaplayacak sekilde.
import time
counter = 0
start = time.time()
for j in range(len(a)-1):
#print('i----',j)
for i in range(len(a)-1):
#print('j',i)
if a[i]>a[i+1]:
#print('ilk',a[i])
counter =counter+1
x = a[i]
a[i] = a[i+1]
a[i+1] = x
#print('son',a[i])
else:
pass
end = time.time()
print(end-start)
Sut ve visne suyu kaplari ornegi cok hostu hocam
A[min] biraz komik denk gelmis orda. Hayirlisi ile kodumuz bitti, A[min] :)
saygılar hocam en kötü durum için önce n tane sonra n-1 , n-2 ... diye geçtiği için n! olmaz mı orayı yanlış mı anladım ben
teşekkürler.
hocam worst case için tersten sortlanmış hali olur demişsiniz ancak, mantıken bakıldıgında her zaman listedeki o ana kadar sortlamadığı tüm elemanlara bakıp da en kücük elemanı secmesi gerekmiyor mu? Yani 1 en başta da olsa en sonda da olsa, 1 i bulduktan sonra da listeyi tamamen gezip 1 den kücük eleman var mı diye bakması gerekmiyor mu? Tesekkürler
Hocam worst-case'de tersten sıralı ise n/2 olmaz mı 1. ile N.'yi yer değiştirdi mi ilk eleman gibi son elemanın da yeri kesinleşiyo
ben de bunu yazıcaktım. Galiba worst case tersten sıralı olmuyor o yüzden
Bunu linked listte nasıl yaparız
İkinci for'da j=i yerine j=i+1'den başlasak daha doğru olmaz mı?
evet olurdu
Dizinin icine 1 kez bakildiginda aynı anda hem minimum hemde maximum değerler yazılabilir mi ?
+Umida Kubanichbekkizi Yazılabilir, bunu analiz ettiğimiz bir video da çekmiştik : ruclips.net/video/3bhBo9YCTpo/видео.html
Başarılar
02:56 da i
yer değiştirme (swap) işlemi yapıldığı için. Bakın şöyle düşünün, dizideki en küçük elemanı buluyorsunuz (bu içerideki döngü ve n'e kadar gidiyor, orada sorun yaşamadığınızı düşünüyorum). Sonra bulduğumuz en küçük elemanı sıradaki elemanla değiştiriyoruz. Şimdi n elemanlı bir dizide bu işi yaparsanız, n. elemana bakmanız gerekmez çünkü zaten en büyük olan eleman n. eleman olarak dizide duruyordur.
Daha basit olarak şöyle anlatayım, 1 elemanlı bir dizide en küçük eleman kendisidir, bu diziye en küçük eleman kaç diye bakmanıza gerek yoktur. n-1 eleman için sıraladıktan sonra son kalan n. elemana bakamanıza gerek yok çünkü zaten orada tek eleman kalmış oluyor.
Umarım faydası olur.
Başarılar
Bu mantık bubble sort için de geçerli fakat insertion için ise son elemana da bakılması gerektiği için geçerli değil, insertion sortta n olması gerek, bubble ise aynı mantık değil mi?
best case neden n^2 oldu? anlayan cevaplayabilir mi?
hocam 1 den n e bakma dediğiniz swaptan mı gelir for da nmı?
ayrık mat
Video'da Java versiyonu gösterilen kodun C ile main içinde yazılmış hali aşağıdadır: Sorum şöyle:
Bu kod ile 5,3,1,4,6,2 dizisini sıralatmaya çalıştığımda çıktısı : 2,1,3,4,5,6 oluyor. Bunun yanında diziyi 6,5,4,3,2,1 olarak ters sıralı yaptığımda çıktısı doğru oluyor : 1,2,3,4,5,6. Bu videodaki kodda hata mı var acaba ?iç döngüyü j=i+1 yapınca da durum değişmiyor.
int main(void)
{
int a[]={5,3,1,4,6,2};
int i,j,enkucuk,temp;
int n = sizeof(a)/sizeof(a[0]);
for(i=0;i
int main() {
int i, j, temp, size, a[] = {5,3,1,4,6,2};
size = sizeof(a)/sizeof(a[0]);
for (i=0; i < size - 1; i++) {
for (j = i + 1; j < size ; j++) {
if (a[j]