• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

Merge Sort Algoritması İle Sıralama Yapma

Üyelik Tarihi
7 Ocak 2015
Konular
4,091
Mesajlar
4,274
MFC Puanı
40
Kod:
#include <stdio.h>
#include <stdlib.h>
 
#define A_SIZE 10
 
**** merge_sort(int *p, int size);
**** print_array(int *p, int size);
 
 
int main(****)
{
int a[A_SIZE] = {24, 8, 12, -99, 87, -6, 0, 587, -56, 44225};
 
print_array(a, A_SIZE);
merge_sort(a, A_SIZE);
print_array(a, A_SIZE);
getchar();
getchar();
return 0;
}
/**************************************/
**** merge_sort (int *p, int size)
{
int *t, *q, *buf;
int   left, len, count1, count2, source1, source2, dest;
 
if (size <= 1)
return;
buf = q = (int *) malloc(size * sizeof(int));
if (buf == NULL) {
printf("not enough memory!");
exit(EXIT_FAILURE);
}
len = 1;
 
do {
left = size;
source1 = dest = 0; source2 = len;
do {
left -= count1 = (left >= len) ? len : left;
left -= count2 = (left >= len) ? len : left;
while (count1 > 0 && count2 > 0) {
if (p[source1] < p[source2]) {
q[dest++] = p[source1++];
count1--;
}
else {
q[dest++] = p[source2++];
count2--;
}
}
while (--count1 >= 0)
q[dest++] = p[source1++];
while (--count2 >= 0)
q[dest++] = p[source2++];
source1 += len; source2 += len;
} while (left > 0);
t = p;
p = q;
q = t;
len *= 2;
} while (len < size);
if (p == buf)
while (--size >= 0)
q[size] = p[size];
free(buf);
}
/**************************************/
**** print_array(int *p, int size)
{
int i;
 
for (i = 0; i < size; i++)
printf("%d ", p[i]);
putchar('\n');
 
 
}
 
Üst