c언어 사전식 배열 질문있습니다!

#include <stdio.h>
#include <string.h>
#pragma warning(disable : 4996)

struct Movie {
	char movie[20];
	char director[20];
};



int main() {

	int n;
	int m;
	int i, j, k;
	struct Movie p[10];
	struct Movie temp;
	scanf("%d", &n);

	for (i = 0; i < n; i++) {
		scanf("%s %s", p[i].movie, p[i].director);
	}

	scanf("%d", &m);

	for (j = 0; j < n-1; j++) {
		for (i = 0; i < n-i-1; i++) {
			if (strcmp(p[i].movie, p[i + 1].movie) > 0) {
				temp = p[i];
				p[i] = p[i + 1];
				p[i + 1] = temp;
			}
		}
	}

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

		if (m == i + 1) {
			printf("%s", p[i].director);
		}
	}
	return 0;
}

코딩 블로그를 보면서 사전식 배열 코드 짜는 걸 연습하고 있는데요, 문자열의 몇번째까지는 정렬이 잘 되는데 뒤에 몇 글자가 정렬이 잘 안되더라구요… 블로그에서 본 대로 똑같이 따라 해봤는데 안되는 이유가 뭘까요?

n 개의 영화와 감독의 문자열 세트를 받은 후에 사전식 정렬 후 m 번째 영화의 감독 이름을 출력하는 코드 입니다!

안녕하세요.

for (j = 0; j < n-1; j++) {
		for (i = 0; i < n-j-1; i++) { 

두번째 for문의 조건이 i가 아니라 j입니다. 왜그런지는 잘 생각해보세유~

알려주셔서 감사합니다!
하나하나씩 다 비교를 해야해서 j로 바꿔야하는거죠…?

말씀하신대로 i를 j로 다 바꿔보았는데 이번에는 타임리미트가 걸려서 답이 출력되지 않네요 ㅠㅠ 무한루프에 걸릴 일은 없는 것 같은데요 …

시간제한 있는거면 다른 정렬 알고리즘을 쓰는게 좋을거 같은데용 ㅎㅎㅎㅎ