您的位置:首页 > 编程语言 > C语言/C++

C语言.冒泡选择及快排

2016-07-23 10:39 531 查看
C语言版

1:冒泡及选择排序————用指针作函数参数

#include <stdio.h>
#define N 10
int bubble_sort (int array[],int(*compare)(int,int));
int Ascending (int a,int b);
void swap (int *a,int *b);
int selection_sort (int array[],int(*compare)(int,int));
int bubble_sort (int *q);
int array
;
void print (int *p)
{
for(p = array ;p<array+N; p++)
printf("%d ",*p);
}
int bubble_sort (int *q)
{
int i,j,t;
for(i = 0; i<N; i++)
for(j = 0; j<N-i-1; j++)
{
if(*(q+j)>*(q+j+1))
{
t = *(q+j);
*(q+j) = *(q+j+1);
*(q+j+1) = t;
}
}
printf("\n*q bubble sort:\n");
for(q = array; q<array+N; q++)
printf("%d ",*q);
}
int bubble_sort(int array[],int(*compare)(int,int))
{
int i,j;
for(i = 0; i<N; i++)
{
for(j = 0; j<N-i-1; j++)
if((*compare)(array[j],array[j+1]))
swap(&array[j],&array[j+1]);
}
printf("bubble sort:\n");
for(i = 0; i<N; i++)
printf("%d ",array[i]);
}
int selection_sort(int array[],int(*compare)(int,int))
{
int i,j;
for(i = 0; i<N; i++)
for(j = i; j<N-1; j++)
{
if((*compare)(array[i],array[j]))
swap(&array[i],&array[j]);
}
printf("\nselection sort:\n");
for(i = 0; i<N; i++)
printf("%d ",array[i]);
}
void swap(int *a,int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
int Ascending(int a,int b)
{
if(a>b)
return 1;
else
return 0;
}
int main()
{
int i,j;
int *p = array;
for(p = array; p<array+N; p++)
scanf("%d",p);
bubble_sort(array,Ascending);//函数作为参数传递
selection_sort(array,Ascending);
bubble_sort(array);
}


2:快速排序

#include<stdio.h>
#define N 10
int a
;
int quicksort(int left,int right)
{
if(left>right)  return 0;
int i,j,temp,t;
temp = a[left];
i = left;
j = right;
while(i!=j)
{
while(i<j&&a[j]>=temp)
j--;
while(i<j&&a[i]<=temp)
i++;
if(i!=j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = temp;
quicksort(left,i-1);
quicksort(i+1,right);
}
int main()
{
int i;
for(i = 0; i<N; i++)
scanf("%d",&a[i]);
quicksort(0,N-1);
for(i = 0; i<N; i++)
printf("%d ",a[i]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: