간단한질문-정렬을 쓰지 않고 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]);
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2690486 | 문자열과 문자형이요 ~ | 다스리 | 2025-04-05 |
2690344 | 일본어 주석 깨짐 문제 (3) | 연하얀 | 2025-04-04 |
2690314 | 암호문 만들기 -비제네르- | 이퓨리한나 | 2025-04-03 |
2690292 | 왕초보자의 질문!!!!!! 도와주세요 (1) | 하랑 | 2025-04-03 |
2690269 | 정올 문제 인데.. 흠 | 반월 | 2025-04-03 |
2690237 | sizeof에서 short형을 썻는데 왜 4byte가 나올까요? (1) | 바나나 | 2025-04-03 |
2690183 | 문자열과 포인트 비교 (2) | 미즈 | 2025-04-02 |
2690154 | a -48 ? | 희미한눈물 | 2025-04-02 |
2690094 | 테트리스 질문요. | 지후 | 2025-04-01 |
2690066 | 문자열비교!! (1) | 매디 | 2025-04-01 |
2689888 | 좀도와주세요;; ㅠㅠ | 사람 | 2025-03-30 |
2689856 | 메뉴 그리는 거 질문 | 나라빛 | 2025-03-30 |
2689831 | c언어 프로그램 추천 | 하연 | 2025-03-30 |
2689801 | c언어 time.h에서 작동이 중지되었습니다. | 하람 | 2025-03-30 |
2689772 | 2차원 배열의 배열명에 대해서.. | 옆집꼬마야 | 2025-03-29 |
2689740 | 게임 TCP소켓 질문 (2) | 불꾼 | 2025-03-29 |
2689711 | 반복문 모래시계 | 한뎃집 | 2025-03-29 |
2689685 | 경우의 수에 따른 결과 처리 질문드립니다. (2) | 다흰 | 2025-03-29 |
2689655 | .exe에 아이콘 넣는 법좀 알려주세요 | 연하얀 | 2025-03-28 |
2689631 | #define 전처리문에 대해서 (2) | 사랑은아픔 | 2025-03-28 |