这个是头文件sort.h
#define ARRAY_NUM 20
int * create_array(void);
void random_array(int *);
void print_array(int *);
void free_array(int *);
void swap_element(int *,int *);
以下是myarray.c作用是随机产生int型数组,以及打印数组,释放内存空间
/*************************************************************************
> File Name: make_array.c
> Author: regan
> Mail: regan@thtfit.com
> Created Time: Thu 03 Mar 2016 09:57:27 AM CST
************************************************************************/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include"sort.h"
//make array
int * create_array(void){
int * array_desc = NULL;
array_desc = malloc(sizeof(int) * ARRAY_NUM);
memset(array_desc,0,ARRAY_NUM);
return array_desc;
}
//random the array
void random_array(int * array_pr){
int i = 0;
srand((unsigned int)time(NULL));
for(i=0;i<ARRAY_NUM;i++){
* array_pr =rand() % 100;
array_pr++;
}
}
//print the array
void print_array(int * array_pr){
int i = 0;
printf("the array is: ");
for(i=0;i<ARRAY_NUM;i++){
printf("%d ",*array_pr);
array_pr++;
}
printf("\n");
}
//free the array's memery
void free_array(int * array_pr){
free(array_pr);
}
//swap the element of array
void swap_element(int * a,int * b){
int temp = 0;
temp = *a;
*a = *b;
*b = temp;
}
冒泡排序
/*************************************************************************
> File Name: insert_sort.c
> Author: regan
> Mail: regan@thtfit.com
> Created Time: Thu 03 Mar 2016 09:55:05 AM CST
************************************************************************/
#include<stdio.h>
#include<stdbool.h>
#include "sort.h"
void bubble_sort(int *);
int main(){
int * array = NULL;
array = create_array();
random_array(array);
print_array(array);
bubble_sort(array);
print_array(array);
free_array(array);
return 0;
}
void bubble_sort(int * array_pr){
int i = 0;
bool swapped;
do{
swapped = false;
for(i = 0;i< ARRAY_NUM-1;i++){
if(*(array_pr+i) > *(array_pr+i+1)){
swap_element(array_pr+i,array_pr+i+1);
swapped = true;
}
}
} while(swapped);
}
插入排序
/*************************************************************************
> File Name: insert_sort.c
> Author: regan
> Mail: regan@thtfit.com
> Created Time: Thu 03 Mar 2016 09:55:05 AM CST
************************************************************************/
#include<stdio.h>
#include "sort.h"
void insert_sort(int *);
int main(){
int * array = NULL;
array = create_array();
random_array(array);
print_array(array);
insert_sort(array);
print_array(array);
free_array(array);
return 0;
}
void insert_sort(int * array_pr){
int i = 0,j = 0;
int current;
for(i = 1; i < ARRAY_NUM;i++){
current = *(array_pr + i);
j = i - 1;
while(j >= 0 && *(array_pr+j)>current){
*(array_pr+j+1) = *(array_pr+j);
j--;
}
*(array_pr+j+1) = current;
}
}
并归排序
/*************************************************************************
> File Name: insert_sort.c
> Author: regan
> Mail: regan@thtfit.com
> Created Time: Thu 03 Mar 2016 09:55:05 AM CST
************************************************************************/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "sort.h"
void merge_sort(int *,int);
int main(){
int * array = NULL;
array = create_array();
random_array(array);
print_array(array);
merge_sort(array,ARRAY_NUM);
print_array(array);
free_array(array);
return 0;
}
void merge_sort(int * array_pr,int num){
int i = 0;
int * temppr = NULL;
i = num/2;
if(i>1){
merge_sort(array_pr,i);
}
if((num-i)>1){
merge_sort(array_pr+i,num-i);
}
temppr = malloc(sizeof(int)*num);
int a=0;
int m=0,n=0;
while((n<num-i) && (m<i))
{
if(*(array_pr+i+n)<*(array_pr+m))
{
*(temppr+a) = *(array_pr+i+n);
n++;
a++;
}else{
*(temppr+a) = *(array_pr+m);
m++;
a++;
}
}
while(n<num-i){
*(temppr+a) = *(array_pr+i+n);
n++;
a++;
}
while(m<i){
*(temppr+a) = *(array_pr+m);
m++;
a++;
}
memcpy(array_pr,temppr,sizeof(int)*num);
}
快速排序
/*************************************************************************
> File Name: insert_sort.c
> Author: regan
> Mail: regan@thtfit.com
> Created Time: Thu 03 Mar 2016 09:55:05 AM CST
************************************************************************/
#include<stdio.h>
#include "sort.h"
void quick_sort(int * ,int);
int main(){
int * array = NULL;
array = create_array();
random_array(array);
print_array(array);
quick_sort(array,ARRAY_NUM);
print_array(array);
free_array(array);
return 0;
}
void quick_sort(int * array_pr,int num){
int i=0,j=0;
j = num - 1;
if(i>=j){
return;
}
int comp = 0;
comp = *array_pr;
while(i<j){
while(*(array_pr+j)>=comp && i<j){
j--;
}
*(array_pr+i)=*(array_pr+j);
while(*(array_pr+i)<=comp && i<j){
i++;
}
*(array_pr+j)=*(array_pr+i);
}
*(array_pr+i) = comp;
if(i>1)
quick_sort(array_pr,i);
if((num-i)>1)
quick_sort(array_pr+i+1,num-1-i);
}
选择排序
/*************************************************************************
> File Name: insert_sort.c
> Author: regan
> Mail: regan@thtfit.com
> Created Time: Thu 03 Mar 2016 09:55:05 AM CST
************************************************************************/
#include<stdio.h>
#include "sort.h"
void selection_sort(int *);
int main(){
int * array = NULL;
array = create_array();
random_array(array);
print_array(array);
selection_sort(array);
print_array(array);
free_array(array);
return 0;
}
void selection_sort(int * array_pr){
int min = 0;
int i = 0,j = 0;
for(i = 0;i<ARRAY_NUM;i++){
min = i;
for(j = i+1;j<ARRAY_NUM;j++){
if(*(array_pr+min)> *(array_pr+j)){
min = j;
}
}
if(min != i){
swap_element(array_pr+i,array_pr+min);
}
}
}