标题:
C语言排序算法1.0
[打印本页]
作者:
须弥
时间:
2024-5-13 18:57
标题:
C语言排序算法1.0
分享C语言写的部分排序算法,还没完善够
。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUBBLE 0 //冒泡排序
#define CHOOSE 1 //选择排序
//插入排序
//希尔排序
//归并排序(迭代法)
//归并排序(递归法)
//快速排序(迭代法)
//快速排序(递归法)
//鸡尾酒排序
//堆排序
//计数排序
//基数排序
//桶排序
int main(int argc,char *argv[]) //main函数的有参形式
{
int arr[5] = {9,3,2,5,7};
int i = 0,j = 0;
int change_time = 0, time = 0, last_time = 0, tmp_index= 0, temp = 0;
system("cls"); //清屏
printf("原始数据:");
for(i = 0; i < 5; i++)
printf(" %d",arr[i]);
printf("\n");
#if BUBBLE
printf("\033[36m冒泡排序:\n\033[0m");
{
change_time = 0;
time = 0; //记录排序次数
last_time = 0;
for(i = 0;i < 5 - 1; i++)
{
//每一次冒泡
for(j = 0;j < 5-1-i;j++)
{
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
time++;
}
}
if(time == last_time)
{
printf("排序完成,内循环次数:%d,交换次数:%d\n",i+1,time);
break;
}
last_time = time;
}
}
#endif
#if CHOOSE
printf("\033[36m选择排序:\n\033[0m");
{
change_time = 0;
time = 0; //记录排序次数
last_time = 0;
for(i = 0;i < 5 - 1; i++)
{
tmp_index = i; //tmp_index 此时代表最小值的下标
for(j = i;j < 5;j++)
{
if(arr[j] < arr[tmp_index])
{
tmp_index = j;
time++;
}
}
if(tmp_index != i)
{
int temp = arr[tmp_index];
arr[tmp_index] = arr[i];
arr[i] = temp;
change_time++;
}
if(i == 3)
{
printf("排序完成,内循环次数:%d,选择次数: %d,交换次数: %d\n",i+1,time,change_time);
break;
}
last_time = time;
}
}
#endif
printf("最终结果:");
for(i = 0; i < 5; i++)
printf(" %d",arr[i]);
printf("\n\n按任意键退出\n");
system("pause");
return 0;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1