ÀüüÀûÀÎ ¼Ò½º´Â
#include <stdio.h>
#include <malloc.h>
void indirect_insert_sort(int a[], int index[], int n)
{
int i, j;
int t;
for(i = 0; i < n; i++)
index[i] = i;
for(i = 1; i< n; i++)
{
t = index[i];
j = i;
while(a[index[j-1]] > a[t] && j > 0)
{
index[j] = index[j-1];
j--;
}
index[j] = t;
}
}
void rearrange(int a[], int index[], int n)
{
int *p;
int i;
p = (int*)malloc(sizeof(int) * n);
for(i = 0; i < n; i++)
p[i] = a[index[i]];
for(i = 0; i < n; i++)
a[i] = p[i];
free(p);
}
void print_arr(int a[], int n)
{
int i;
for(i = 0; i < n; i++)
printf("%-5d", a[i]);
printf("\n");
}
void print_index_arr(int a[], int index[], int n)
{
int i;
for(i = 0; i < n; i++)
printf("%-5d", a[index[i]]);
printf("\n");
}
int main()
{
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int len = sizeof(arr) / sizeof(int);
int index[sizeof(arr) / sizeof(int)] = {0, };
printf("ÃʱⰪ\n");
print_arr(arr, len);
indirect_insert_sort(arr, index, len);
printf("\n°£Á¢ Á¤·Ä ÈÄ arr °ª\n");
print_arr(arr, len);
printf("\n°£Á¢ Á¤·Ä ÈÄ arr[index] °ª\n");
print_index_arr(arr, index, len);
rearrange(arr, index, len);
printf("\n°£Á¢ Á¤·Ä, Àç¹è¿ ÈÄ arr°ª\n");
print_arr(arr, len);
return 0;
}
À̰ÍÀÔ´Ï´Ù.
ÀÌ Áß¿¡ ÄÄÆÄÀÏ ½Ã indirect_insert_sort ÇÔ¼öÀÇ
while(a[index[j-1]] > a[t] && j > 0) ºÎºÐÀÌ ¿¡·¯°¡ ³³´Ï´Ù.
±Ùµ¥ Á¶°Ç ¼ø¼¸¦ while(j > 0 && a[index[j-1]] > a[t]) ·Î ¹Ù²Ù¸é
¿¡·¯°¡ ³ªÁö ¾Ê½À´Ï´Ù... ÀÌÀ¯¸¦ ¾Ë·ÁÁÖ½Ç ¼ö ÀÖ³ª¿ä??
|