几种排序方法的C语言实现
来源:互联网 发布:淘宝sku在哪里设置 编辑:程序博客网 时间:2024/05/17 03:03
#include <stdio.h>
#include <stdlib.h>
#define SORT_ASCENDING (1)
#if SORT_ASCENDING
#define compare_num(a,b) ((a) > (b))
#else
#define compare_num(a,b) ((a) < (b))
#endif
#define NUM (10)
//======================================================================================
int print_num(int data[])
{
int n;
for (n = 0; n < NUM; n++)
{
printf("%d ", data[n]);
}
printf("/n");
return 0;
}
int generate_num(int data[])
{
int n;
for (n = 0; n < NUM; n++)
{
data[n] = (rand() - rand()) % 100;
}
print_num(data);
return 0;
}
//======================================================================================
#define swap_num(n, i, j) do { n[i] ^= n[j]; n[j] ^= n[i]; n[i] ^= n[j]; } while (0);
/*
* bubble sort
*/
int bubble_sort(int data[], int num)
{
int i, j;
printf("%s=> ", __FUNCTION__);
for (i = 0; i < num; i++)
{
for (j = i + 1; j < num; j++)
{
if (compare_num(data[i], data[j]))
{
swap_num(data, i, j);
}
}
}
print_num(data);
return 0;
}
/*
* select sort
*/
int select_sort(int data[], int num)
{
int i, j, x;
printf("%s=> ", __FUNCTION__);
for (i = 0; i < (num - 1); i++)
{
x = i;
for (j = i + 1; j < num; j++)
{
if (compare_num(data[j], data[x]))
{
x = j;
}
}
if (x != i)
{
swap_num(data, i, x);
}
}
print_num(data);
return 0;
}
/*
* insert sort
*/
int insert_sort(int data[], int num)
{
int i, j;
printf("%s=> ", __FUNCTION__);
for (i = 1; i < num; i++)
{
for (j = 0; j < i; j++)
{
if (compare_num(data[j], data[i]))
{
swap_num(data, i, j);
}
}
}
print_num(data);
return 0;
}
/*
* quick sort
*/
int _quick_sort(int data[], int low, int high)
{
int i, j, x;
if (low < high)
{
i = low;
j = high;
x = data[i];
while (i < j)
{
while ((i < j) && compare_num(data[j], x))
{
j--;
}
if (i < j)
{
data[i] = data[j];
i++;
}
while ((i < j) && compare_num(x, data[i]))
{
i++;
}
if (i < j)
{
data[j] = data[i];
j--;
}
}
data[i] = x;
_quick_sort(data, low, i - 1);
_quick_sort(data, i + 1, high);
}
return 0;
}
int quick_sort(int data[], int num)
{
printf("%s=> ", __FUNCTION__);
_quick_sort(data, 0, num - 1);
print_num(data);
return 0;
}
//======================================================================================
int main()
{
int data[NUM];
generate_num(data);
bubble_sort(data, NUM);
generate_num(data);
select_sort(data, NUM);
generate_num(data);
insert_sort(data, NUM);
generate_num(data);
quick_sort(data, NUM);
return 0;
}
- 几种排序方法的实现 (C语言)
- 几种排序方法的C语言实现
- 数据排序的几种方法(c语言实现)
- 数据排序的几种方法(c语言实现)
- 几种常见的排序方法(C语言实现)
- 二级c语言之常用的几种排序方法
- c语言几种有用的排序方法
- 关于c语言几种排序方法的理解
- c语言的几种常用排序的实现
- C语言中的几种排序方法
- 几种常用排序算法的C语言实现
- 几种常见排序算法的c语言实现
- 几种常用排序算法的C语言实现
- 几种常见排序算法的C语言实现
- 几种排序算法的C语言实现
- 几种C语言实现的排序算法
- 几种常见排序算法的c语言实现
- 几种常见排序算法的c语言实现
- lucene 关键字高亮
- 巴西龟吃什么
- 在网页中动态的生成一个gif图片
- 领导人不好做
- 神奇的“达夫设备”代码!
- 几种排序方法的C语言实现
- java的一些基本概念
- 如何把 java applet 转化为java application
- java中this的用法
- Lucene搜索的api的4个主要类
- 作业:电子商务存在的问题.
- 新起点,新生活
- 俄罗斯方块
- 网页的“画中画”———IFRAME标记的用法及示例