#include <stdio.h>
void display(int arr[], int LEN){
printf("The sorted array is:\n");
for(int i = 0; i < LEN; i++){
printf("%d ", arr[i]);
}
}
void swap(int num1, int num2, int arr[]){
int tmp = arr[num1];
arr[num1] = arr[num2];
arr[num2] = tmp;
}
int wallMove (int left, int right, int pivot, int arr[], int LEN){
int leftP = left - 1;
int rightP = right;
while (1){
while(arr[++leftP] < pivot) {
//do nothing
}//after while statement, left lines are continued
while(rightP > 0 && arr[--rightP] > pivot) {
//do nothing
}
if(leftP >= rightP){
break;
}
else {
// leftp > pivot et leftP < rightP
printf(" item swapped : %d, %d\n", arr[leftP], arr[rightP]);
swap(leftP, rightP, arr);
}
}
printf(" pivot swapped : %d, %d \n", arr[leftP], arr[right]);
swap(leftP, right, arr);
printf("updated Array : ");
display(arr, LEN);
return leftP;
}
void quickSort(int left, int right, int arr[], int LEN){
if(right-left <= 0){//for index
return;
} else{
int pivot = arr[right];
int wallPoint = wallMove(left, right, pivot, arr, LEN);
quickSort(left, wallPoint-1, arr, LEN);
quickSort(wallPoint+1, right, arr, LEN);
}
}
void main(){
int LEN = 0;
printf("Input length (smaller than 100) of the array:");
printf("\n");
scanf("%d", &LEN);
int arr[LEN];
printf("Input all elements:");
printf("\n");
for(int i = 0; i < LEN; i++){
scanf("%d", &arr[i]);
}
quickSort(0, LEN - 1, arr, LEN);
display(arr, LEN);
}
//conscioiusness
void display(int arr[], int LEN){
printf("The sorted array is:\n");
for(int i = 0; i < LEN; i++){
printf("%d ", arr[i]);
}
}
void swap(int num1, int num2, int arr[]){
int tmp = arr[num1];
arr[num1] = arr[num2];
arr[num2] = tmp;
}
int wallMove (int left, int right, int pivot, int arr[], int LEN){
int leftP = left - 1;
int rightP = right;
while (1){
while(arr[++leftP] < pivot) {
//do nothing
}//after while statement, left lines are continued
while(rightP > 0 && arr[--rightP] > pivot) {
//do nothing
}
if(leftP >= rightP){
break;
}
else {
// leftp > pivot et leftP < rightP
printf(" item swapped : %d, %d\n", arr[leftP], arr[rightP]);
swap(leftP, rightP, arr);
}
}
printf(" pivot swapped : %d, %d \n", arr[leftP], arr[right]);
swap(leftP, right, arr);
printf("updated Array : ");
display(arr, LEN);
return leftP;
}
void quickSort(int left, int right, int arr[], int LEN){
if(right-left <= 0){//for index
return;
} else{
int pivot = arr[right];
int wallPoint = wallMove(left, right, pivot, arr, LEN);
quickSort(left, wallPoint-1, arr, LEN);
quickSort(wallPoint+1, right, arr, LEN);
}
}
void main(){
int LEN = 0;
printf("Input length (smaller than 100) of the array:");
printf("\n");
scanf("%d", &LEN);
int arr[LEN];
printf("Input all elements:");
printf("\n");
for(int i = 0; i < LEN; i++){
scanf("%d", &arr[i]);
}
quickSort(0, LEN - 1, arr, LEN);
display(arr, LEN);
}
//conscioiusness
댓글
댓글 쓰기