홈으로...

자료구조 물어볼게 있어요ㅠㅠ

  • LV 1 zenojm
  • 비추천 0
  • 추천 2
  • 조회 3429
  • 2013.11.25 15:02
프로젝트 과제인데요..
버블정렬보다 빠른 정렬로 코드를 짜는건데요
삽입정렬로 코드를 짜봤어요
그런데 컴파일은 되는데 원하는 값을 출력을 받지 못했습니다..
대체 뭐가 문제인지를 모르겠어요..
혹시 조언 좀 구할 수 있을까해서 글을 씁니다 ㅠㅠ

소스파일과 헤더파일 코드를 남기겠습니다.
버블정렬은...
//헤더파일
typedef struct{
int listIdx;
int elementIdx;
} Element;

void initList(int size, int bDebug); // 정렬되지 않은 리스트(listIdx = 0)을 생성함
int createList(int size); // 요소의 개수가 size인 새로운 리스트를 생성함;(임시 저장 공간을 위해서 사용할 수 있음)
// 99개의 리스트를 생성할 수 있음.
void destroyList(int listIdx); // createList()로 생성된 리스트 중에서 사용되지 않는 리스트를 삭제함
int compare(Element e1, Element e2); // 두개의 요소를 비교함( e1 == e2 이면 0, e1 > e2 이면 1, e1 < e2 이면 -1)
void assign(Element e1, Element e2); // e1요소에 e2의 값을 할당함
void validateList(); // ListIdx가 0인 리스트가 정렬됨을 검사함. 실패하면 정렬되지 않는 elementIdx을 반환함
// 정렬 성공시에는 정렬 시간을 출력함
int getValue(Element e); // 요소에 할당된 값을 반환함(bDebug != 0 인 경우에만 동작함)

//소스파일
#include "listMgr.h"

#define MAX_ELEMENT 1000 // 정렬할 요수의 개수

void bubble_sort()

int i, j;
Element temp, e1, e2;

initList(MAX_ELEMENT, 0);

temp.listIdx = createList(1);
temp.elementIdx = 0;
e1.listIdx = 0;
e2.listIdx = 0;

  for(i=MAX_ELEMENT-1; i>0; i--){
for(j=0; j<i; j++){ // 앞뒤의 레코드를 비교한 후 교체
e1.elementIdx = j;
e2.elementIdx = j+1;
if ( compare(e1, e2) > 0 ){
assign( temp, e1 );
assign( e1, e2 );
assign( e2, temp );
}
}
  }

destroyList(temp.listIdx);
validateList();
}

void main()
{
bubble_sort();
}


제가 짠 삽입정렬은..
//소스코드

#include "listMgr.h"

#define MAX_ELEMENT 1000

void insertion_sort()
{
int i, j;
Element key, e1, e2;

initList(MAX_ELEMENT,0); //MAX_ELEMENT값의 리스트 소환

key.listIdx = createList(1);  //요소의갯수가1인 새로운 리스트를 생성해 key.listIdx할당
key.elementIdx = 0;
e1.listIdx = 0;        //위에서 할당할 리스트를 e1, e2에 할당
e2.listIdx = 0;

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

e1.elementIdx = i;    //e1에 i를 할당
assign( key, e1 );    //key에 list[i]를 삽입

for(j=i-1;j>=0 && compare(e1, key);j--)
e1.elementIdx = j;        // e1에 j를 할당
e2.elementIdx = j+1;   // e2에 j+1를 할당
assign( e2, e1 );        //e2(j+1)에 e1(j)을 삽입
assign( e2, key );        //e2(j+1)에 key을 삽입


}
destroyList(key.listIdx);        // 생성된 리스트중에서 안쓰는거 파기 (key.listIdx)
validateList();              //(검사하고 결과값 출력)
}

void main()
{
insertion_sort();
}



========================================================================
이 밑에 있는 삽입정렬을 참고 하면서 짜봤습니다
void insertion_sort(int list[], int n)
{
int i, j, key;
for(i=1; i<n; i++){
key = list[i];

for(j=i-1; j>=0 && list[j]>key; j--)
list[j+1] = list[j];
list[j+1] = key;
}
}
========================================================================
버블정렬을 실행시
정렬성공
정렬시간 : 5344.446000초

이렇게 뜨구요..

삽입정렬 실행시
...
정렬되지 않는 요소 : <999>
정렬실패

이렇게 뜹니다.

왜 정렬성공이 안뜨고 정렬성공으로 뜨면서 정렬시간까지 뜰 수 있게 알려 주실 분 있으신가요ㅠㅠ

추천 2 비추천 0

트위터 페이스북 다음요즘 싸이공감 구글 북마크 네이버 북마크
LV 1 zenojm
탭으로 안에 있는 구문들은 보기 좋게 해놨었는데 글을 올리니 탭이 안먹힌상태네요ㅠㅠ
LV 1 리쿠스
버블정렬이랑 삽입정렬은 똑같이 시간복잡도가 O(n^2)입니다..
물론  데이터가 순서대로 정렬이 되어이있을경우는 삽입정렬이 빠르지만요
LV 1 리치cl
저도 정말 열심히 했었는데..말이죠...지금은 군에...
LV 1 큐티챙
퀵소트
LV 1 기정헌
컴터 언어관련은 너무 어려운거 같아요~
LV 1 iou610
한 줄 한 줄 디버깅 해보심이..
LV 1 smjin
헐........ 여기에 요런질문올리시는건 첨봐용 ㅎㅎㅎㅎㅎ
LV 1 이이다다다
헉...너무 어렵다 ;;;;;;
LV 1 김남길2
고마워요~~많은 도움이 도ㅒㅆ네요~~~~~~~~~~~~~
질문게시판 게시판 게시물 목록
번호 제   목 이름 날짜 조회 추천
8868 유튜브 앱 댓글 번역 언어 설정 바꾸는 거 어떻게 하나요? (1) LV 2 넥플로더 01-13 3811 13
8867 큐큐에서 다운받은 vr화일이 실행어떻게하나요? ㅠㅠ (1) LV 1 김민기275544 01-02 2830 16
8866 포인트는 어떻게모으나요? (17) LV 1 한시간 12-21 2818 31
8865 토렌트 항상 이용해오다가 (3) LV 4 후223 12-18 4833 16
8864 USB 메모리 카드 용량 (4) LV 4 hanade 12-17 3574 20
8863 시간이 지나서 티프리카에서 사라진 압축파일의 비밀번호를 찾을 수 없는 건가요..? LV 4 드라이F 12-09 3352 14
8862 mp4 파일 작품좀 올려주세요 ㅠㅠ (8) LV 1 스톤콜드75 11-28 3143 14
8861 보안인증성 오류가 있습니다..라는 에러 메세지 (4) LV 4 건아야 11-22 2482 9
8860 미채택? (2) LV 1 드라마사랑 11-18 2393 11
8859 지금 개봉중인 영화 중 볼만한게 있나요? (4) LV 3 인생초기화 11-18 3104 9
8858 드라마 다운할때 뒤에 first,next 붙은거좀 알려주세요 (4) LV 2 최스나 11-16 3894 9
8857 영화 다운로드 포스터 안뜸 (8) LV 5 4254 11-11 2916 11
8856 포스터 LV 5 4254 11-09 2212 9
8855 안녕하세요 LV 1 gold7 11-08 2193 8
8854 다운로드가 어디있나요? (11) LV 1 시나몬 11-06 4880 10
8853 유유베 (1) LV 1 군포오징어… 11-06 2936 7
8852 음악비밀번호 (2) LV 1 영화다운 11-05 3243 6
8851 배너 때문에 다운로드을 할 수 없네요 (3) LV 1 용암골 10-30 3228 8
8850 토렌트 다운 받았다고 경찰서에서 조사 받았는데요 (11) LV 2 anfak 10-29 10590 12
8849 다운로드 오류 (2) LV 2 이성규77 10-26 3368 11
8848 특촬물은 너무 비인기 인가요 (9) LV 1 내일부터우… 10-14 4470 12
8847 드라마 방영중 메뉴에 (5) LV 1 totosa 10-12 3415 8
8846 이 사진 누구죠? (24) LV 2 진영인 10-05 6721 17
8845 등급 올리면 (9) LV 1 월클 10-03 3554 12
8844 요즘엔 뭐가 재미있나요? (11) LV 1 월클 10-03 3213 11
8843 마녀 도대체 언제 나오나요? (7) LV 1 월클 10-03 4460 10
8842 유틸란에 올려주신 포토샵2024 압축파일 비밀번호좀 알려주실수 있나해서 글 남겨봅… (8) LV 2 소시미 10-02 5933 9
8841 알뜰폰 관련 질문 드립니다. (8) LV 4 라엔느 09-24 3543 10
8840 출책후 다운로드 (3) LV 2 7109 09-16 3424 9
8839 인스타 질문요 LV 9 dkxmfktm 09-07 2630 6
광고 · 제휴 문의는 이메일로 연락 바랍니다.  [email protected]   운영참여·제안 | 개인정보취급방침
Copyright © www.uuoobe.com All Rights Reserved.