간단한질문-정렬을 쓰지 않고 n번째 작은수 구하기(!?!?)(Quick sort)
화가마
질문 제목 : 정렬을 쓰지 않습니다.
질문 내용 :
질문 드리겠습니다...
1)일단 첫번째 left에 빨강색으로 해놓은곳을...
right로.. 즉 피벗을 맨 오른쪽으로 바꾼다면 그 뒤에 나오는 쏘스를
어떻게 바꿔야지 정상작동이 되나요 ...?
2)int main.뒤의 괄호 안에 있는건 도대체 무엇인가요..? 안써도 무방하다고 생각되는데...( 빨강색 표시 !! )
3) n째 작은수를 입력하세요 = 라고 printf 써놓고.. scanf로 받은다음... printf(%d,numbers[n번째])
이렇게 놓으면 출력되는건데... 참... 저의 비쥬얼스튜디오는 scanf가 안먹네요.. scanf_s로 쓰라고 하면서
그렇게 써도 안되고.. ㅠㅠ 혹시 시간이 되신다면 이 기능까지 추가해주시면 고맙겠습니다... ㅠㅠ 아니면
scanf_s이 문제를 해결하는 방법좀요 .. ㅠㅠ 저꺼 컴퓨터로 입력받는걸 못만들어서 ... 답답해서 추가로
번호매겨서 질문으로 올립니다 !! 즐거운 하루되세요 ^^
혹 이해가 안가신다면... QuickSort 검색해보시면 됩니다 !!
void quickSort(int numbers[], int array_size);
void q_sort(int numbers[], int left, int right);
void quickSort(int numbers[], int array_size)
{
q_sort(numbers, 0, array_size -1);
}
void q_sort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left]; // 0번째 원소를 피봇으로 선택
while (left right)
{
// 값이 선택한 피봇과 같거나 크다면, 이동할 필요가 없다
while ((numbers[right] = pivot) && (left right))
right --;
// 그렇지 않고 값이 피봇보다 작다면,
// 피봇의 위치에 현재 값을 넣는다.
if (left != right)
{
numbers[left] = numbers[right];
}
// 왼쪽부터 현재 위치까지 값을 읽어들이면서
// 피봇보다 큰 값이 있다면, 값을 이동한다.
while ((numbers[left] = pivot) && (left right))
left ++;
if (left != right)
{
numbers[right] = numbers[left];
right --;
}
}
// 모든 스캔이 끝났다면, 피봇값을 현재 위치에 입력한다.
// 이제 피봇을 기준으로 왼쪽에는 피봇보다 작거나 같은 값만 남았다.
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
// 재귀호출을 수행한다.
if (left pivot)
q_sort(numbers, left, pivot - 1);
if (right pivot)
q_sort(numbers, pivot+1, right);
}
int main(int argc, char **argv)
{
int data[] = {3,7,8,5,2,1,9,5,4};
int i;
quickSort(data, 9);
for (i =0; i 9; i++)
{
printf(%d\n, data[i]);
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2679247 | 다차원 배열과 포인터에 관한 질문입니다. (4) | 터전 | 2024-12-22 |
2679218 | c언어 문제질문요. | 옆집언니 | 2024-12-22 |
2679189 | 숫자를 거꾸로 출력하기.... 어떻게짜야할지..생각이안떠올라용. (7) | 주인님 | 2024-12-22 |
2679164 | 구조체 인데요..잘 안나와서 질문이요.. (1) | 하늘이 | 2024-12-22 |
2679140 | 쉬프트 연산자 사용이유? (2) | 핫블랙 | 2024-12-21 |
2679112 | 간단한질문-정렬을 쓰지 않고 n번째 작은수 구하기(!?!?)(Quick sort) | 화가마 | 2024-12-21 |
2679083 | 프로그래밍 수학 질문좀요, (2) | 큰힘 | 2024-12-21 |
2678897 | 문자열을 strstr함수를 사용해서 찾는 문자열과 바꿀문자열을 입력받아서 교환해서 출력하는문제. (3) | 바름 | 2024-12-19 |
2678872 | while if break차이 (2) | 뿌닝 | 2024-12-19 |
2678819 | typedef을 이용하여 변수 선언 이후 대입방법. (4) | 다가 | 2024-12-18 |
2678769 | 배열 합 응용이예요 도와주십쇼 ㅠㅠ (2) | 아란 | 2024-12-18 |
2678739 | 함수 배열 질문있어요 | 하루 | 2024-12-18 |
2678711 | 테일러 급수를 이용한 e의 x승 구하는 프로그램 (2) | 접시 | 2024-12-17 |
2678685 | 정보올림피아드에 대해 좀 가르쳐주십시요 (2) | 헤벌심 | 2024-12-17 |
2678661 | 이코드에서 prime가 하는역할이궁금해서이렇케글을올림니다;.. (2) | 소율 | 2024-12-17 |
2678606 | 정적 변수 예제질문 | 바람 | 2024-12-16 |
2678580 | 포인터 & 배열 개념... 좀 어지럽내요 알려주세요 ㅠㅠ (2) | 엘보어 | 2024-12-16 |
2678550 | 디데이 프로그램질문좀요^^ | 또야 | 2024-12-16 |
2678474 | 질문이요 ~ 책에서 나온 건데 잘 모르겠어용 (1) | 소년틳터프 | 2024-12-15 |
2678443 | 헤더파일생성(dev) | 파란 | 2024-12-15 |