C언어 초보 질문

jhs0315의 이미지

안녕하세요
c언어 공부 시작한 지 얼마 안된 학생입니다.
4천만명을 버블소트로 돌려서 걸리는 시간을 측정해야 하는데요,
오류를 어떻게 해결해야 할 지 모르겠습니다 ㅠㅠ
4000만을 어떻게 입력해야 하나요... 도와주세요

#include <stdio.h>
#include <time.h>
 
void main()
{
	int i, j, tmp=0;
	double gap;
	time_t startTime=0, endTime=0;
	int arr[40000000];
	long n=40000000L;
 
	startTime=clock();
	for(j=0; j<n-1; j++)
	{
		for(i=0; i<n-1-j; i++)
		{
			if(arr[i+1]<arr[i])
			{
				tmp=arr[i];
				arr[i]=arr[i+1];
				arr[i+1]=tmp;
			}
		}
	}
	endTime=clock();
 
	gap=(double)(endTime-startTime)/(CLOCKS_PER_SEC);
 
	printf("%f초\n", gap);
} 
익명 사용자의 이미지

선언하신 배열 arr에다가 입력을 어떻게 하는지 질문하신 거에요?

ㄸㄹㄹ...

가지고 계신 C언어 관련 책이 있으시면 대부분 앞부분에 보시면 엄청 자세히 설명되어 있어요!!

라스코니의 이미지

4000만(4 x 10^7 개)을 입력하려면 일반 배열로 안될 것 같기도 하지만 for () 루프를 돌려서 만들면 간단하게는 가능합니다.
대충 규칙을 생각하신 후 1부터 6까지 입력해야 한다면

1,2,3,4,5,6
6,5,4,3,2,1
1,3,5,2,4,6

등으로 정렬 들어가지 전에 초기화를 해주시면 되죠.