삽입정렬 알고리즘 질문입니다.

nayana의 이미지

#include<stdio.h>

#define N 100

void indirect_insert_sort( int score[], int index[], int n );

int main( void )
{

	int i, n, score1[N], index1[N];

    printf("Number of data ?\t "); // 입력할 데이터 갯수

    scanf("%d", &n);

	for( i = 0; i < n; i++ ) // 데이터 갯수에 맞게 데이터 입력
    {
		printf("score[%d] = ", i);
		scanf("%d", &score1[i]);
	}

    indirect_insert_sort( score1, index1, n );

    for( i = 0; i < n; i++ )
		printf( "(%d)\t %d\n", i + 1, score1[ index1[i] ] );

    return 0;

}

void indirect_insert_sort( int score[], int index[], int n )
{

        int i, j, t;

		for( i = 0; i < n; i++ )
			index[i] = i;

        for( i = 1; i < n; i++ )
        {

                t = index[i];

                j = i;

                while( score[ index[j - 1] ] > score[t] && j > 0  )
				{
					index[j] = index[j - 1];
					j--;
				}

				index[j] = t;
		}
}

입력을 132라고 정렬이 잘되는데..
입력을 213 또는 321 이라고하면 세그먼테이션이 떨어집니다.

pluto95의 이미지

흠.. 그냥 봐도 에러날꺼 같은데요...
213이면.... 처음부터 while문이 돌아가는건데.. j-- 를 하면.. j=0이 되는데.. 거기서 index[j-1]을 부르면.. index[-1] .....
에러 날꺼 같군요..

lkjt의 이미지

공부 하시는건가요?

아니면 그냥 퀵소트를,,, :?

lkjt의 이미지

index [] 에 1씩 증가하면서 넣는건가요?,,, 그럼 구지 배열에 1,2,3,4,를 널필요가,,,

lkjt의 이미지

이 소스는 삽입정렬의 전략 일뿐입니다.

i=1
j=i

while(a[j-1]>a[i] && j>0)
{
a[j]=a[j-1]
j--
a[j]=a[i]
i++
}

nayana의 이미지

일단 삽입정렬에 대해서 공부하고 있는중입니다.
삽입정렬 약간개선(?) 시켜서 간접정렬로 바꾸고 있는중입니다.
처음 부터 while 문 돌긴 하지만 j > 0 으로 j가 음수가 되면
while문을 빠져나오게 하였는데...그러면..이상이 없는것이
아닌가요...^^;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.