c语言rk算法排序,交换排序——冒泡排序和快速排序——C语言描述

#include

#include

/*函数声明部分*/

void __quick_sort(int par_array[], int low, int high);

void bubble_sort(int par_array[], int array_size);

void quick_sort(int par_arrayp[], int array_size);

void print_array(int par_array[], int array_size);

/*函数定义部分*/

void print_array(int par_array[], int array_size)

{

int i;

for(i = 0; i < array_size; ++i)

printf("%d/t", par_array[i]);

printf("/n");

}

/*

* 冒泡排序

*/

void bubble_sort(int par_array[], int array_size)

{

int i,j;

int temp;

for (i = 0; i < array_size-1; ++i)/*进行n-1次冒泡*/

{

for (j = array_size-1; j > i; --j)

{

if (par_array[j] < par_array[j-1])

{

/*交换*/

temp = par_array[j];

par_array[j] = par_array[j-1];

par_array[j-1] = temp;

}

}

}

}

/*

* 快速排序

* 从右到左划分整个待排序集合,最后采用分而治之的方法解决问题

* 重要的是理解划分过程

* 其实是分而治之的思想

*/

void __quick_sort(int par_array[], int low, int high)

{

int i,j;

int pivot;

if(low >= high)

return ;

i = low;

j = high;

pivot = par_array[i];

while (i < j)

{

while (i < j && par_array[j] >= pivot)

j--;

if(i < j)

par_array[i++] = par_array[j];

while (i < j && par_array[i] < pivot)

i++;

if(i < j)

par_array[j--] = par_array[i];

}

par_array[i] = pivot;

__quick_sort(par_array, low, i-1);

__quick_sort(par_array, i+1, high);

}

/*

* 封装成统一接口

*/

void quick_sort(int par_arrayp[], int array_size)

{

__quick_sort(par_arrayp, 0, array_size-1);

}

int main()

{

int i_array[] = {7,3,5,8,9,1,2,4,6};

int array_size = sizeof(i_array)/sizeof(int);

int i_array2[] = {7,3,5,8,9,1,2,4,6};

int array_size2 = sizeof(i_array2)/sizeof(int);

printf("Before bubble_sort:/n");

print_array(i_array, array_size);

bubble_sort(i_array, array_size);

printf("After bubble_sort/n");

print_array(i_array, array_size);

printf("Before quick_sort:/n");

print_array(i_array2, array_size2);

quick_sort(i_array2, array_size2);

printf("After quick_sort/n");

print_array(i_array2, array_size2);

system("pause");

}

/*

Before bubble_sort:

7 3 5 8 9 1 2 4 6

After bubble_sort

1 2 3 4 5 6 7 8 9

Before quick_sort:

7 3 5 8 9 1 2 4 6

After quick_sort

1 2 3 4 5 6 7 8 9

请按任意键继续. . .

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值