2008年nba东部半决赛g7:帮我写下C语言的小程序,有关排序算法

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 12:18:45
我GF要做个课设,哥们我以前C还可以,毕业两年多了,早忘没有了,又不忍说自己不会,男人不能说不行呀!所以,大家帮帮忙吧~~~万分感谢

题目 各种排序算法的综合测试
[问题描述]
排序是程序设计中常用的算法,今随机产生若干组不同规模的数据,要求分别使用不同的排序方法进行排序:(1)直接插入排序;(2)简单选择排序;(3)冒泡排序;(4)快速排序;(5)堆排序;(6)归并排序。
[基本要求]
(1)要有简单的菜单界面;
(2)对不同规模的数据元素序列进行排序;
(3)数据元素必须是随机产生的;
[测试数据]
随机产生,数据规模自行设定(不得小于10)。

给出源代码和可执行文件

发到我邮箱里就行,shadowlgx@163.com ,谢谢,达到要求的话,哥们100%给追加分,谢谢啊~
我发现你们的回答真。。。让人伤心

看看这个http://zhidao.baidu.com/question/3386212.html

#include <stdio.h>

/*交换两个数*/
void Swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
/*输出一行十个数字*/
void Write(int array[], int begin, int end)
{
for(int i = begin; i <= end; i ++)
// cout <<array[i] << " ";
printf("%d ",array[i]);
printf("\n");
// cout << endl;
}
/*插入排序*/
void InsertionSort(int array[], int begin, int end)
{
int i, j;
int tmp;
for(i = begin+1; i <= end; i ++) /*循环几次就输出几行*/
{
tmp = array[i];
for(j = i-1; j >= begin; j --)
{
if(tmp > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
array[j + 1] = array[j];
else
break;
}
array[j+1] = tmp;
Write(array, begin, end); /*输出排序结果(一行)*/
}
}
/*选择排序*/
void SelectionSort(int array[], int begin, int end)
{
int i, j;
int position;
for(i = begin; i < end; i ++)
{
for(j = i+1, position = i; j <= end; j ++)
{
if(array[j] > array[position]) /*如果要从小到大排序,则改将'>'改为'<'*/
position = j;
}
Swap(array[i], array[position]);
Write(array, begin, end);
}
}
/*冒泡排序*/
void BubbleSort(int array[], int begin, int end)
{
int i, j;
for(i = begin; i < end; i ++)
{
for(j = begin; j <= end - begin -1; j ++)
{
if(array[j+1] > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
Swap(array[j], array[j+1]);
}
Write(array, begin, end);
}
}

/*将原始数组拷贝到要排序的数组,因为有3个排序方法,所以必须保留原始数组,以备其他调用*/
bool Copy(int array1[], int array2[], int n1, int n2)
{
if(n1 != n2)
return false;
else
{
for(int i = 0; i < n1; i ++)
{
array1[i] = array2[i];
}
return true;
}
}
/*主函数*/
void main()
{
/*如果需要输入排序的个数不是10个数,可以将3个地方的10改为你要的个数就可以了*/

int number, i; /*定义2个整型变量*/
int initinal[10], sort[10]; /*定义2个数组,第一个是保存输入的10个数,第2个是用来排序的数组*/

printf("请输入十个要排序的数字:\n");
number = 10; /*排序个数是10个*/

for(i = 0; i < number; i ++)
scanf("%d",&initinal[i]);

printf("从大到小插入排序:\n");
Write(initinal, 0, number-1); /*输出原始十个数据*/
Copy(sort,initinal,number, number); /*将原始数组拷贝到排序数组*/
InsertionSort(sort,0,number-1); /*调用排序函数*/

printf("从大到小选择排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
SelectionSort(sort,0,number-1);

printf("从大到小冒泡排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
BubbleSort(sort,0,number-1);
}

可以考虑
不过“简单的菜单界面”的要求具体是什么样的菜单界面呢?
你尽可能地描述清楚然后发到我邮箱hanxuaiztt@126.com里
再有三四天我的毕业论文就可以搞定了,到时候我一定帮你做

帮你下一个吧 呵呵
快速排序
void quickSort(char* arr,int startPos, int endPos)
{
int i,j;
char ch;
ch=arr[startPos];
i=startPos;
j=endPos;
while(i<j)
{
while(arr[j]>=ch && i<j)--j;
arr[i]=arr[j];
while(arr[i]<=ch && i<j)++i;
arr[j]=arr[i];
}
arr[i]=ch;
if(i-1>startPos) quickSort(arr,startPos,i-1);
if(endPos>i+1) quickSort(arr,i+1,endPos);
}

void main()
{
char ch[]="qwertyuiopasdfghjklzxcvbnm";
quickSort(ch,0,25);
printf("\n%s\n",ch);
}

冒泡法排序:有些格式错了,自己改下
#include<stdio.h>
#define N 8
void main()
{
double a[N],t;
int i,j;
printf("input %d number:\n",N);
for(i=0;i<N;i++)
scanf("%lf",&a[i]);
for(i=0;i<N-1;i++)
for(j=0;j<N-i-1;j++)
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];
a[j+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i<N;i++)
printf("%.2f ",a[i]);
}