//sort.h
#ifndef __SORT_H
#define __SORT_H
#define LEN 10
void _bubble(int n, int *a);
void _select(int n, int *a);
void _insert(int n, int *a);
void _quick(int n, int *a, int left, int right);
void print(int n, int *vect, char *hit);
#endif
//sort.c
#include<stdio.h>
#include"sort.h"
void _insert(int n, int *a)
{
int i, j;
int min;
for(i = 1; i < n; i++){
min = a[i];
for(j = 0; j < i; j++){
if(a[i] < a[j]){
int k;
for(k = i; k > j; k--){
a[k] = a[k-1];
}
a[j] = min;
break;
}
}
}
}
void _select(int n, int *a)
{
int i, j;
int index, min, flag = 0;
for(i = 0; i < n; i++){
min = a[i];
for(j = i; j < n; j++){
if(a[j] < min){
min = a[j];
flag = 1;
index = j;
}
}
if(flag == 1){
a[index] = a[i];
a[i] = min;
flag = 0;
}
print(n, a, "ranging");
}
}
#define METHOD1
void _quick(int n, int *a, int left, int right)
{
if(left < right){
int i = left, j = right;
int flag = a[i];
while(i < j){
print(n, a, "ranging");
while(i < j && a[j] > flag){
j--;
}
if(i < j){
a[i] = a[j];
#ifdef METHOD1
a[j] = flag;
#endif
i++;
}
while(i < j && a[i] <= flag){
i++;
}
if(i < j){
a[j] = a[i];
#ifdef METHED1
a[i] = flag;
#endif
j--;
}
}
#ifdef METHED2
a[i] = flag;
#endif
_quick(n, a, left, i-1);
_quick(n, a, j+1, right);
}
}