dizideki en küçük elemanı bulma

Başlatan serter, 07 Kasım 2017, 13:53:23

serter

İyi Günler arkadaşlar. İnteger tipindeki bir dizinin elemanlarını karşılaştırıp en küçük elemanın indisini bulmak isityorum. Bunun bir yolu var mıdır acaba?

Firzen

University of Idaho                                  Postdoctoral Fellow

vitruvius

Alıntı yapılan: Firzen - 07 Kasım 2017, 13:59:37
Bubble Sort Algorithm.

Bubble sort diziyi modifiye eder. Bu zannediyorum ki baslik sahibinin istedigi bir sey degil. Onun yerine "Linear Search" kullanabilir.

E-x8

#3
int[] dizi = { 78, -186, 7777, -87546, 67676, 2, 3, 7, 9, 22, 31, 63, 1000 };

int bul(int[] x) {
		int[] hafiza = {x[0],0};
		for (int i = 0; i < x.Length; i++){
		if (x[i] < hafiza[0]){
			hafiza[0] = x[i];
			hafiza[1] = i;
		}
	}
return hafiza[1];
}


int main() {
	bul(dizi);
	return 0;
}


İşlem sonunda hafiza[0] değişkeninde, dizinin en küçük elemanı bulunur.
İşlem sonunda hafiza[1] değişkeninde, dizinin en küçük elemanının indisi bulunur.

OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

MC_Skywalker

#5
C# ta şöyle yapılıyor. Atmel C için benzer algoritmayı uygulamak kolay olur.

// arana elemanın idis numarasını bulan algoritma pusedo code
public static int dogrusalArama(int[] dizi, int aranan)
{
    for(int i=0; i<dizi.Length;i++)
        if(dizi==aranan)
         return i;
    return -1;
}

static void Main(string[] args)
{
  int[] liste = {5, 1, 3, 7, 6, 2};
  int aranan =3;
  int indis = dogrusalArama(liste, aranan);
  if (indis==-1)
     Console.Write("Eleman Bulunamadı..");
  else
     Console.Write("Eleman İndisi:{0}",indis);
  Console.ReadKey();
}

mufitsozen

Hangi microprocessor icin ve handi dil ile?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.


vitruvius

Alıntı yapılan: E-x8 - 07 Kasım 2017, 16:26:32
int8 için hafiza değişkenin 0. elemanını başlangıç için 255'e eşitle.
int16 için hafiza değişkenin 0. elemanını başlangıç için 65535'e eşitle.
int32 için hafiza değişkenin 0. elemanını başlangıç için 4294967296'e eşitle.

Aslinda buna cok da gerek yok. Uzerinde calistigin dizinin ilk elemanina da esitlesen olur.

E-x8

#9
Alıntı yapılan: vitruvius - 07 Kasım 2017, 23:21:01
Aslinda buna cok da gerek yok. Uzerinde calistigin dizinin ilk elemanina da esitlesen olur.

Daha sağlıklı olacaktır.

Edit : Haklısınız aslında hiçbir önemi yok.