도와주세요 ㅜㅜ 머지소트 내림차순이 잘 안되요..
한내
#include stdio.h
#include stdlib.h
#include time.h
#define maxsize 50000
void merge_sort(int *p,int n);
void merge_pass(int *p,int *q,int n,int len);
void merging(int *p,int *q,int first,int second,int n);
int main()
{
FILE *f;
int array[500000],i;
f=fopen(\\500000.txt,rt);
clock_t start,finish;
double duration;
start = clock();
for(i=0; i=maxsize; i++)
{
fscanf(f,%d,&array[i]);
}
fclose(f);
merge_sort(array,maxsize);
for(i=0; imaxsize; i++)
{
printf(%d ,array[i]);
}
finish = clock();
duration=(double)(finish-start)/1000;
printf(\n실행시간 : %.3f초\n,duration);
return 0;
}
void merge_sort(int *p,int n)
{
int i, len = 1;
int temp_keys[maxsize];
while(len n)
{
merge_pass(p, temp_keys, n, len);
len = len*2;
for(i=0;i maxsize;i++)
{
p[i] = temp_keys[i];
}
}
}
void merge_pass(int *p,int *q,int n,int len) {
int t, i = 0;
while(i n-len*2)
{
merging(p,q,i,i+len,i+2*len-1);
i = i+2*len;
}
if(i n-len) merging(p, q, i, i+len, n-1);
else for(t=i; tn; t++)
{
q[t] = p[t];
}
}
void merging(int *p,int *q,int first,int second,int n) {
int i,j,k,t;
i = first;
j = second;
k = first;
while((i second)&&(j = n))
{
if(p[i] p[j])
{
q[k] = p[i++];
}
else
{
q[k] = p[j++];
}
k++;
}
if(i second)
{
for(t=i;t second;t++)
{
q[k++] = p[t];
}
}
else
{
for(t=j; t=n ;t++)
{
q[k++]=p[t];
}
}
}
1. 이게 지금 오름차순으로 만든 머지 소트인데요..
왜 내림차순으로 고치려고하면 자꾸 에러 뜰까요...ㅜ
2. 텍스트파일에 50만개 숫자를 머지소트로 내림차순 정렬해야하는데..
파일을 읽어오면 메모리 오류가 떠요..어떡해야하나요 ;;
-
나빛
파일 전체를 한꺼번에 읽어오는 것이 아니고, 하나 하나 읽어와서 처리하면 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |