c语言主函数排序 C语言函数排序

C语言,在主函数输入10个数,调用排序函数进行排序后 按升序排序

#includeiostream

创新互联建站-专业网站定制、快速模板网站建设、高性价比大方网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式大方网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖大方地区。费用合理售后完善,10多年实体公司更值得信赖。

#includealgorithm

using namespace std;

int main()

{

int a[10];

for(int i=0;i10;i++)

cina[i];

sort(a,a+10);

for(int i=0;i10;i++)

couta[i]" ";

coutendl; 

}

c++ algorithm库里自带sort非递减排序

用c语言编程编写一个函数,用选择法对主函数中的一个字符数组进行从大到小的排序。

#includestdio.h

#includestring.h

void Sort(char s[][51],int n) {

char t[51];

int i,j,k;

for(i = 0; i  n - 1; ++i) {

k = i;

for(j = i + 1; j  n; ++j) {

if(strcmp(s[k],s[j])  0)

k = j;

}

if(k != i) {

strcpy(t,s[i]);

strcpy(s[i],s[k]);

strcpy(s[k],t);

}

}

}

int main() {

char s[][51] = {"continue","break","for","while","struct","swicth","edit","copy","past","please"};

int i,n = 10;

printf("排序前:\n");

for(i = 0; i  n; ++i)

printf("%s\n",s[i]);

Sort(s,10);

printf("\n排序后:\n");

for(i = 0; i  n; ++i)

printf("%s\n",s[i]);

printf("\n");

return 0;

}

C语言编写一个排序函数(对一维数组排序)并在主函数中调用

for(j=i+1;jn;j++)

{

if(a[j+1]a[i])//a[j+1]改成a[j]

{

t=a[i];

a[i]=a[j+1];//a[j+1]改成a[j]

a[j+1]=t;//a[j+1]改成a[j]

}

}

用C语言编写函数实现快速排序(升序),在主函数中输入数组数据,并调用该数得到排序结果。

//希望对楼主有小小的帮助。。。

//排序的算法是二分法,N的对数时间复杂度。。。

//如果有疑问,我们可以再探讨。。。

#includestdlib.h

#includestring.h

#includestdio.h

bool merge(int * array,int p,int q,int r)

{

if(!(pqr)p=0r=sizeof(array)/sizeof(array[0])-1)

{

return false;

}

int * left =new int[q-p+1];

int * right=new int[r-q];

memcpy(left,array+p,sizeof(int)/sizeof(char)*(q-p+1));

memcpy(right,array+q+1,sizeof(int)/sizeof(char)*(r-q));

int left_index=0,right_index=0,left_max_index,right_max_index;

left_max_index=q-p+1;

right_max_index=r-q;

for(int k=p;k=rleft_indexleft_max_indexright_indexright_max_index;++k)

{

if(left[left_index]=right[right_index])

{

array[k]=left[left_index];

++left_index;

}

else

{

array[k]=right[right_index];

++right_index;

}

}

if(left_index==left_max_index)

{

for(;k=rright_indexright_max_index;++k,++right_index)

{

array[k]=right[right_index];

}

}

else if(right_index==right_max_index)

{

for(;k=rleft_indexleft_max_index;++k,++left_index)

{

array[k]=left[left_index];

}

}

delete left;

delete right;

return true;

}

void merge_sort(int * array,int p,int r)

{

if(pr)

{

int q=(r+p)/2;

merge_sort(array,p,q);

merge_sort(array,q+1,r);

merge(array,p,q,r);

}

}

void main()

{

int size,index,* array;

//printf("请输入元素个数:");

scanf("%d",size);

array=(int*)malloc(size*sizeof(int));

for(index=0;indexsize;index++)

{

//printf("请输入第%d元素:",index+1);

scanf("%d",array[index]);

}

merge_sort(array,0,size-1);

for(index=0;indexsize;index++)

{

printf("%d ",array[index]);

}

printf("\n");

}

C语言数据结构顺序表选择排序怎么在主函数中调用,谢谢!

SeqList L;//L只是个默认构造,在后面执行基本是统一的0值;执行前应该设置实体数据

L=Selection(L.length);//改为L=Selection(L);原函数调用与函数定义不符,有语法错误;L.length是个int 类型,函数定义的参数类型是SeqList;

SeqList Selection(SeqList L) 内部逻辑不够简捷,多多练习;

if (L.data[j]L.data [i]){}//可直接交换,k标志没什么作用。

c语言中排序方法

1、冒泡排序(最常用)

冒泡排序是最简单的排序方法:原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。(注意每一轮都是从a[0]开始比较的)

以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。

2、鸡尾酒排序

鸡尾酒排序又称双向冒泡排序、鸡尾酒搅拌排序、搅拌排序、涟漪排序、来回排序或快乐小时排序, 是冒泡排序的一种变形。该算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。

原理:数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。

3、选择排序

思路是设有10个元素a[1]-a[10],将a[1]与a[2]-a[10]比较,若a[1]比a[2]-a[10]都小,则不进行交换。若a[2]-a[10]中有一个以上比a[1]小,则将其中最大的一个与a[1]交换,此时a[1]就存放了10个数中最小的一个。同理,第二轮拿a[2]与a[3]-a[10]比较,a[2]存放a[2]-a[10]中最小的数,以此类推。

4、插入排序

插入排序是在一个已经有序的小序列的基础上,一次插入一个元素*

一般来说,插入排序都采用in-place在数组上实现。

具体算法描述如下:

⒈ 从第一个元素开始,该元素可以认为已经被排序

⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描

⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置

⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

⒌ 将新元素插入到下一位置中

⒍ 重复步骤2~5


文章标题:c语言主函数排序 C语言函数排序
网页路径:http://hbruida.cn/article/dodigoo.html