快速排序算法的C语言实现
2021/7/8 14:45:49
本文主要是介绍快速排序算法的C语言实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
快速排序算法是对冒泡排序算法的改进,速度上有了很大提升。变种也非常多,今天就比较容易理解的一种方式进行C语言的代码实现示范。
C语言代码如下:
#include"stdio.h"
int Partialize(int*array,int low_index,int high_index);
void QuickSort(int*array,int low_index,int high_index);
int test_array[] ={1,5,3,6,2,4};
int Partialize(int*array,int low_index,int high_index)
{
int base_value = array[low_index];
while(high_index > low_index)
{
while((high_index >low_index)&&(array[high_index] >= base_value))
{
high_index -= 1;
}
array[low_index] = array[low_index] ^ array[high_index];
array[high_index] = array[low_index]^ array[high_index];
array[low_index] = array[low_index] ^ array[high_index];
while((high_index >low_index)&&(array[low_index] <= base_value))
{
low_index += 1;
}
array[low_index] = array[low_index] ^ array[high_index];
array[high_index] =array[low_index] ^ array[high_index];
array[low_index] = array[low_index] ^ array[high_index];
}
array[high_index] = base_value;
return high_index;
}
void QuickSort(int*array,int low_index,int high_index)
{
int index = 0;
if(low_index < high_index)
{
index =Partialize(array,low_index,high_index);
QuickSort(array,low_index,index -1);
QuickSort(array,index +1,high_index);
}
else
{
/* nothing */
}
}
int main(void)
{
int i = 0;
int array_length = 0;
array_length =sizeof(test_array)/sizeof(int);
printf("data beforesorted:\n");
for(i = 0;i<array_length;i++)
{
printf("%d,",test_array[i]);
}
printf("\n");
printf("data after sorted:\n");
QuickSort(test_array,0,array_length - 1);
for(i = 0;i<array_length;i++)
{
printf("%d,",test_array[i]);
}
return 0;
}
编译运行结果:
E:\WorkSpace\01_编程语言\01_C语言\01_算法\01_排序>gcc quick_sort.c
E:\WorkSpace\01_编程语言\01_C语言\01_算法\01_排序>a
data beforesorted:
1, 5, 3, 6, 2, 4,
data after sorted:
1, 2, 3, 4, 5, 6,
E:\WorkSpace\01_编程语言\01_C语言\01_算法\01_排序>
经过在Java学习过程中对这个算法的学习总结,现在总算是有一点熟练的感觉了。后期使用Python再实现一下试试看,毕竟如今Python也是我比较常用的一个工具。
这篇关于快速排序算法的C语言实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享