Insertion Sort
public static void insertion_srt(int array[]){
for (int i = 1; i < array.lenght; i++){ int j = i; int B = array[i]; while ((j > 0) && (array[j-1] > B)){
array[j] = array[j-1];
j--;
}
array[j] = B;
}
}
Selection Sort
Algoritma 1. dizi elemanının, dizinin 2. elemanından sonuncu elemanına kadar olan küme içerisindeki en küçük eleman ile yer değiştirmesiyle başlar. Bir sonraki adımda 2. eleman, 3. elemandan son elemana kadar olan küme içerisinden en küçük elemanla yer değiştirir. Bu işlemler son elemanında yerini bulmasıyla sona erer.
public void selectionSort(int[] arr) {
int i, j, minIndex, tmp;
int n = arr.length;
for (i = 0; i < n - 1; i++) {
minIndex = i;
for (j = i + 1; j <; n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
if (minIndex != i) {
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
}
Bubble Sort
Sıralanacak sayılardan ilk olan alınır ve bir sonrakiyle karşılaştırılır.Eğer kendinden büyükse yer değiştirilir.İlk sıralama sonunda en büyük sayı bulunur.Her döngüden sonra bir sayı elenir ve en sonunda sıralama gerçekleşir.
public void bubbleSort(int[] arr) {
boolean swapped = true;
int j = 0;
int tmp;
while (swapped) {
swapped = false;
j++;
for (int i = 0; i < arr.length - j; i++) { if (arr[i] > arr[i + 1]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
swapped = true;
}
}
}
}
bubble sort ile lineer sort çok karıştırılıyor. senin yazdığın bubble değil lineer sort. Bubble’ın farkı while döngüsü ve bir boolean değişken kullanılıyor, böylece eğer sıralı ise tekrar kontrol etmiyor
http://en.wikipedia.org/wiki/Bubble_sort#Alternative_implementations
öncelikle yorumunuz için teşekkürler sayın efe dinçer
http://en.wikipedia.org/wiki/Bubble_sort#Step-by-step_example
ancak wiki’deki örnektekiyle kurdugum programın farkını göremedim program algoritmaya göre davranıyor..
http://www.molgun.com/images/bubble.jpg
procedure bubbleSort( A : list of sortable items ) defined as:
do
swapped := false
for each i in 0 to length(A) – 1 inclusive do:
if A[i] > A[i+1] then
swap( A[i], A[i+1] )
swapped := true
end if
end for
while swapped
end procedure
burada while döngüsü var yani kaç kere döneceği belli değil, eğer sayılar sıralı değilse değişim oluyor ve değişim olduktan sonra bir boolean bir değişken true oluyor döngü de bu değişkeni kontrol ederek hareket ediyor, eğer değişim olmuşsa tekrar sayıları tarıyor, değişim yoksa sayılar sıralanmış demektir diyor ve döngüden çıkıyor