Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: main.c
- * Author: Gerardo Cicalese
- *
- * Created on 16 settembre 2019, 15.48
- */
- #include <stdio.h>
- #include <stdlib.h>
- void print_vex(int * vex, int len){
- if(len<1)
- return;
- printf("%d ", *vex);
- print_vex(vex+1, len-1);
- }
- void swap_int(int * a, int * b){
- *a=*a+*b-(*b=*a);
- }
- int partition(int * a, int left, int right){
- int var=0, pivot=a[right]; /* pivot is last element */
- while(var<=right){
- if(a[var]<pivot){
- swap_int(a+var,a+left);
- ++var;
- ++left;
- }
- else if(a[var]>pivot){
- swap_int(a+var,a+right); /* we don't increase var cause we don't know */
- --right; /* if the swapped element is smaller this time */
- }
- else
- ++var;
- }
- return left-1; /* indexes of elements with pivot value is [left-1; right] */
- }
- void quick_sort(int * vex, int left, int right){
- if( left >= right )
- return;
- int pivot=partition(vex, 0, right);
- quick_sort(vex, 0, pivot);
- quick_sort(vex, pivot+1, right);
- }
- int main(void){
- int array[10]={23, 62, 15, 97, 35, 78, 34, 89, 13, 57};
- quick_sort(array, 0, 9);
- print_vex(array, 10);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement