c语言编程题,高手请帮忙,急 30

题目:编写程序,输入若干字符串,将其按从小到大的顺寻排列输出。请真正的高手帮忙,不要说“用strcmp()就行这”种废话的谢谢那位提供了很多种字符串排序函数的朋友,虽然我... 题目:编写程序,输入若干字符串,将其按从小到大的顺寻排列输出。
请真正的高手帮忙,不要说“用strcmp()就行这”种废话的
谢谢那位提供了很多种字符串排序函数的朋友,虽然我并不是排序时遇到困难,但还是谢谢

题目的要求是能输入若干个字符串,并对其排序后从小到大输出,这个若干是题目重点,要能输入不确定个数的字符串,例如,第一次运行时是输入了3个字符串来比较,而第二次运行时用来比较5个字符串。
最好能对代码做下解释,谢谢
展开
 我来答
百度网友06bebf5
2009-06-17 · TA获得超过358个赞
知道小有建树答主
回答量:461
采纳率:0%
帮助的人:380万
展开全部
直接用strcmp()就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
缇棂砚
2009-06-17 · TA获得超过312个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:249万
展开全部
排序算法很多的,下面有几个C++写的字符串排序函数。
C里面不能直接用 > 、< 那些的比较字符串,将大于(小于)符号换成strcmp()函数就行了。
其实跟C差不多,因为没有用类那些的复杂结构,稍微改改就是C了。

#include <iostream>
#include <cmath>
#include <string>
using namespace std;

/*-----------------Insertion Sort----------------------------*/

int InsertionSort(string a_sort[], int length)
{
int i,j;
string key;
ofstream fout;
for(j=1; j<length; j++)
{
key = a_sort[j];
i=j-1;
while( (i>=0)&&(a_sort[i]>key) )
{
a_sort[i+1]=a_sort[i];
i=i-1;
}
a_sort[i+1]=key;
}
return 1;
}

/*--------------------Quick Sort------------------------------------*/

int Partition(string a[], int p, int r)
{
int i, j;
string x, temp;
x = a[r];
i = p-1;

for(j=p; j<r; j++)
{
if(a[j]<=x)
{
i = i+1;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
temp = a[i+1];
a[i+1] = a[r];
a[r] = temp;

return i+1;
}

int Randomized_Partition(string a[], int p, int r)
{
int i;
string temp;
i = rand() % (p-r) + p;
temp = a[r];
a[r] = a[i];
a[i] = temp;
return Partition(a, p, r);
}

int QuickSort(string a[], int p, int r)
{
int q;
while(p<r)
{
q = Randomized_Partition(a, p, r);
QuickSort(a, p, q-1);
p = q+1;
}
return 1;
}
/*---------------------BubbleSort-------------------------------------*/

int BubbleSort(string a_sort[], int length)
{
int i, j;
string temp;
for(i=0; i<length; i++)
{
for(j=length-1; j>i; j--)
{
if( a_sort[j] < a_sort[j-1] )
{
temp = a_sort[j];
a_sort[j] = a_sort[j-1];
a_sort[j-1] = temp;
}
}
}
return 1;
}

/*----------------------HeapSort--------------------------------------*/

int MaxHeapify(string a[], int i, int HeapSize) //调整为最大堆
{
int l, r, largest;
string temp;
l = 2*i+1;
r = 2*i+2;

if( l<HeapSize && a[l]>a[i] )
largest = l;
else largest = i;

if( r<HeapSize && a[r]>a[largest] )
largest = r;

if ( largest!=i )
{
temp = a[i];
a[i] = a[largest];
a[largest] = temp;
MaxHeapify(a, largest, HeapSize);
}
return 1;
}

int Build_Max_Heap(string a[], int length ) //建最大堆
{
int i;
int HeapSize;
HeapSize = length;
for( i= length/2-1; i>=0; i-- )
MaxHeapify( a, i, length);
return 1;
}

int HeapSort(string a_sort[], int length) //堆排序
{
int i;
int HeapSize;
HeapSize = length;
string temp;
Build_Max_Heap(a_sort, length);
for(i=length-1; i>1; i--)
{
temp = a_sort[0];
a_sort[0] = a_sort[i];
a_sort[i] = temp;
HeapSize -= 1;
MaxHeapify(a_sort,0,HeapSize);
}

return 1;
}

/*--------------------Merge Sort------------------------------------*/
int Merge (string a[], int p, int q, int r)
{
int n1, n2;
int i, j, k;
static string L[n], R[n];////

n1 = q-p+1;
n2 = r-q;

for(i=0; i<n1; i++)
L[i] = a[p+i-1];
for(j=0; j<n2; j++)
R[j] = a[q+j];

L[n1+1] = R[n2+1] = "................";
i=1;
j=1;
for (k=p; k<q; k++)
{
if ( L[i] <= R[j])
{
a[k]=L[i];
i += 1;
}
else
{
a[k]=R[j];
j += 1;
}
}
return 1;
}

int MergeSort(string a[], int p, int r)
{
int q=0;
if(p<r)
{
q=(p+r)/2;
MergeSort(a, p, q);
MergeSort(a, q+1, r);
Merge(a, p, q, r);
}
return 1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式