2024年9月c语言函数组排序(C语言实现一个函数,将数组整体升序排列.)

 更新时间:2024-09-21 08:49:53

  ⑴c语言函数组排序(C语言实现一个函数,将数组整体升序排列.

  ⑵C语言实现一个函数,将数组整体升序排列.

  ⑶我亲手写的。#include《stdio.h》#include《stdlib.h》intget_len(char*);voidrp_last(char*,char*,char*);intget_len(char*str){if(str==NULL)return-;inti;for(i=;str;i++);returni;}voidrp_last(char*s,char*sub,char*sub){inti,j;intk;intsLen;intsubLen;intsubLen;sLen=get_len(s);subLen=get_len(sub);subLen=get_len(sub);for(i=sLen-;i》=;i--){for(j=subLen-,k=i;j》=&&k》=;j--,k--)if(s)break;if(j《)break;}//printf(“%d

  ⑷“,i);if(j》=)printf(“notfound!

  ⑸“);elseif(subLen》subLen){k=subLen-subLen;for(j=i+;s;j++);for(j=subLen-;j》=;j--,i--)s;}else{k=subLen-subLen;s=’’;for(j=sLen-;j》i;j--)s;for(j=subLen-;j》=;j--,i--)s;}printf(“result:%s

  ⑹“,s);return;}voidmain(){chars;charsub;charsub;printf(“s:“);gets(s);printf(“sub:“);gets(sub);printf(“sub:“);gets(sub);rp_last(s,sub,sub);return;}

  ⑺求C语言将数组元素大小排序!!

  ⑻#include《stdio.h》

  ⑼intmain(){

  ⑽intnumbers={,,,,,,,,,};

  ⑾inta,b,text,hello;

  ⑿for(a=;a《-;a=a+){????????//在这里进行比较的开始的代码

  ⒀hello=;????????????????????//假如剩下的元素已经被排序好了,然后接着进行下面的比较

  ⒁for(b=;b《--i;b=b+){

  ⒂if(numbers){

  ⒃text=numbers;

  ⒄numbers=text;

  ⒅if(hello)break;

  ⒆for(a=;a《;a=a+){

  ⒇printf(“%d“,numbers);

  ⒈C语言中数组元素大小的相关排序规则:

  ⒉首先需要对数组中的元素进行排列,默认是以字符串的规则进行从小到大排序;可接收一个参数:自定义的规则相关排序。参数的具体要求如下:

  ⒊参数首先必须是一个函数;

  ⒋函数必须有一个明确的返回值;

  ⒌返回值必须是number类型,但不可以是NaN。

  ⒍首先每次从数组中挑选出两个元素传入函数中,进行比较,直到所有进行排列的元素都被挑选完毕以后就不要再进行挑选;

  ⒎如果返回值是一个正数,就交换这彼此的位置,实现大小的正确排列;

  ⒏如果返回值是一个负数或,此时说明大小位置的顺序是正确的,此时就不需要交换彼此的位置。

  ⒐默认同一字符的全角字符看做半角字符。不区分同一个字符(如日文的片假字的半角与全角状态。相同元素,维持原序,默认区分字母大小写,同一个字符小写在前,大写在后。

  ⒑注意:对数组的元素进行排序需要不断比较两个数字的大小,个元素排序一共需要比较次,直到所有的元素被都完完全全地被比较一次。

  ⒒C语言,编写一个函数,函数是用选择排序法将数组排序

  ⒓#include《stdio.h》voidpx(inta){inti,temp,j;for(i=;i《;i++){for(j=i;j《;j++){if(a){temp=a;a;a=temp;}}}}voidmain(){inti,a;for(i=;i《;i++){printf(“成绩:“);scanf(“%d“,&a);}px(a);for(i=;i《;i++){printf(“%d“,a);printf(“

  ⒔“);}}你的错误有点多,px(该改成px(a),还有for语句少打了括号,还有for语句里面的i和p的初值都应该为,而你的是,编程序的时候要注意代码的格式排版不然很难找错的就像你的for语句少打了括号一样自己写完了都不容易看出来还有你那px函数里面的变量声明了太多,没必要代码看起来要简单可读性才强我帮你把没必要的删了看起来更舒服

  ⒕C语言sort函数如何使用

  ⒖C语言中没有预置的sort函数。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。

  ⒗可以编写自己的sort函数。

  ⒘如下函数为将整型数组从小到大排序。

  ⒙void?sort(int?*a,?int?l)//a为数组地址,l为数组长度。

  ⒚for(i?=?;?i?《?l?-?;?i?++)

  ⒛for(j?=?i+;?j?《?l;?j?++)

  if(a)//如前面的比后面的大,则交换。

  }????????}}

  对于这样的自定义sort函数,可以按照定义的规范来调用。

  C语言有自有的qsort函数。

  功能:使用快速排序例程进行排序

  头文件:stdlib.h

  原型:voidqsort(void*base,intnelem,intwidth,int(*fcmp)(constvoid*,constvoid*));

  数组中待排序元素数量

  各元素的占用空间大小

  指向函数的指针,用于确定排序的顺序

  这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型。

  以下是qsort的一个例子:

  #include《stdio.h》

  #include《stdlib.h》

  int?p(const?void*a,const?void*b)//用来做比较的函数。

  return?*(int*)a-*(int*)b;

  int?main()

  int?a?=?{,,,,,,,,,};//乱序的数组。

  qsort(a,n,sizeof(int),p);//调用qsort排序

  for(i=;i《;i++)//输出排序后的数组

  printf(“%d “,array);

  sort函数的用法(C++排序库函数的调用)

  对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。

  为什么要用c++标准库里的排序函数

  Sort(函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log(n),执行效率较高!

  c++标准库里的排序函数的使用方法

  ISort函数包含在头文件为#include《algorithm》的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!

  IISort函数有三个参数:

  第一个是要排序的数组的起始地址。

  第二个是结束的地址(最后一位要排序的地址的下一地址

  第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

  Sort函数使用模板:

  Sort(start,end,排序方法)

  下面就具体使用sort(函数结合对数组里的十个数进行排序做一个说明!

  例一:sort函数没有第三个参数,实现的是从小到大

  #include《iostream》

  #include《algorithm》

  usingnamespacestd;

  inta={,,,,,,,,,};

  for(inti=;i《;i++)

  cout《《a《《endl;

  sort(a,a+);

  for(inti=;i《;i++)

  cout《《a《《endl;

  G,GNU组织开发的开源免费的编译器

  MinGW,Windows操作系统下的G

  Clang,开源的BSD协议的基于LLVM的编译器

  VisualC++?::cl.exe,MicrosoftVC++自带的编译器

  CodeBlocks,开源免费的C/C++IDE

  CodeLite,开源、跨平台的C/C++集成开发环境

  OrwellDev-C++,可移植的C/C++IDE

  LightTable

  VisualStudio系列

  HelloWorld

  搞定,用户手动输入数列,可以是正负数。宏定义MAX_STRING_SIZE决定用户输入的最大字符长度,MAX_ARRAY_SIZE决定用户最多输入的整数个数。bubble_sort()函数实现冒泡法排序,第一个参数为被排序数组,第二个参数为数组长度,地三个参数为排序方式,表示从小到大,非表示从大到小。/*vim:setetsw=:*/#include《stdio.h》#include《string.h》#defineMAX_STRING_SIZE()#defineMAX_ARRAY_SIZE()#definePARE(a,b,p_type)(p_type==?(a》b):(a《b))/*sort_type=,smalltolarge,elseinreverseorder*/voidbubble_sort(int*ar,intsize,intsort_type){intswapped,i,val;do{swapped=;for(i=;i《size-;i++){if(PARE(ar,sort_type)){val=ar;ar;ar=val;swapped++;}}size--;}while(swapped!=);}intmain(){charbuffer;char*p;intarray;inti,len,num_count;charch;printf(“Inputnumberserials,seperatedbywhitespaces!

  “);len=num_count=;while(((ch=getchar())!=’

  ’)&&len《MAX_STRING_SIZE){if(ch》=’’&&ch《=’’){buffer=ch;}else{switch(ch){case’’:buffer=’’;break;case’-’:case’+’:buffer=ch;break;default:printf(“

  Invalidcharacter!

  “);return-;}}}buffer=’’;for(i=;i《len;i+=(strlen(p)+)){p=&buffer;if(*p!=’’){if(num_count》=MAX_ARRAY_SIZE){printf(“arrayisfull(total%delements),remainingnumbersarediscarded!

  “,num_count);break;}array=atoi(p);}}if(num_count》){/*sortfirsthalfbyreverseorder*/bubble_sort(array,num_count/,);/*sortlastpart*/if(num_count%){bubble_sort(&array,num_count/,);}else{bubble_sort(&array,num_count/,);}}printf(“Aftersorting:

  “);for(i=;i《num_count;i++){printf(“%d“,array);}printf(“

  “);return;}

  C语言中通过函数调用对一维数组进行排序

  #include《stdio.h》#include《stdlib.h》#include《time.h》#defineMAXlenvoidselect_sort(int*x,intn){//选择排序inti,j,min;intt;for(i=;i《n-;i++){//要选择的次数:~n-共n-次min=i;//假设当前下标为i的数最小,比较后再调整for(j=i+;j《n;j++){//循环找出最小的数的下标是哪个if(*(x+j)《*(x+min)){min=j;//如果后面的数比前面的小,则记下它的下标}}if(min!=i){//如果min在循环中改变了,就需要交换数据t=*(x+i);*(x+i)=*(x+min);*(x+min)=t;}}}intmain(){inti;intiArr;srand((unsignedint)time(NULL));printf(“

  “);for(i=;i《MAXlen;i++){iArr=(unsignedint)rand()%;if(i%==)printf(“%

  “);printf(“%d“,iArr);}printf(“

  “);select_sort(iArr,MAXlen);printf(“

  “);for(i=;i《MAXlen;i++){if(i%==)printf(“%

  “);printf(“%d“,iArr);}printf(“

  “);return;}

  选择排序的原理是,每次从待排序数字中挑选出最大(最小数字,放在有序序列的末尾。实际操作中,只需要在这个数组中将挑出来的数字与前面的数字交换即可。例如:找到最小的,和交换找到最小的,和交换找到最小的,和交换找到最小的,和交换(不交换也可可见,选择排序需要一个双重循环来完成,因此它的复杂度是O(n^)在数据量比较大时,不建议使用这种排序方法。其他排序方法有很多,你甚至可以自己根据不同数据规模设计不同的排序方法。比较常见的有冒泡排序,插入排序(这两种和选择排序一样,都是O(n^),二分法插入排序(降低了一些复杂度,但是涉及到大规模数据移动,效率依然不高,快速排序(平均复杂度O(nlogn),但是不稳定,最坏情况O(n^),随机化快速排序(很大程度上避免了最坏情况的出现,堆排序(O(nlogn),编程复杂度高,基数排序(理论复杂度O(n),实际要比这个慢。甚至能应付字符串排序,但是编程复杂度高,牵扯到其他数据结构,桶排序(O(n),编程简单,效率高,但是应付的数据范围不能太大,受到内存大小的限制。平时比较常用的就是快速排序,程序简单,效率也可以接受。这是我了解的一些东西,希望对你有帮助。

  今天为嘛总是见到最后这句话……初学者……冒泡呗,两个数据都冒。两个for循环,两趟比较,每趟把最大的放最前面(或者最小的放最后面,我感觉都一样交换的时候,把两个都同时交换了就好……

  编写函数,使用选择排序法对数组进行排序(用C语言

  #include?《stdio.h》#include?《stdlib.h》#include?《time.h》?int?main(void){????int?a,i,j,tmp,b;????srand(time(NULL));????for(i=;i《;i++)????????a=rand()%;????for(i=;i《;i++)????????printf(“%d“,a);????printf(“

  “);????for(i=;i《;i++)????{????????tmp=i;????????for(j=i+;j《;j++)?????????{????????????if(a)????????????tmp=j;?????????}????????if(i!=tmp)????????{????????????b=a;????????????a;????????????a=b;????????}????}????for(i=;i《;i++)????printf(“%d“,a);????printf(“

  “);????return?;}

  随机产生数组中的元素,更合理一些。百科中有各种版本。

  求C语言将数组元素大小排序!!

  C语言将数组元素大小排序方法:

  以下使用的是冒泡排序法实线数组从小到大排序。

  思想:每次相邻两个数比较,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后。

  是输入的待排序的数列,经过第一次排序,将最大的,放在最后,第二次排序,将剩下的、、、、、、、、进行冒泡,将当前最大的放在倒数第二的位置,以此类推。

  #include《stdio.h》

  intmain(){

  intnums={,,,,,,,,,};

  inti,j,temp,isSorted;

  //优化算法:最多进行n-轮比较

  for(i=;i《-;i++){

  isSorted=;?//假设剩下的元素已经排序好了

  for(j=;j《--i;j++){

  temp=nums;

  nums=temp;

  isSorted=;?//一旦需要交换数组元素,就说明剩下的元素没有排序好

  if(isSorted)break;//如果没有发生交换,说明剩下的元素已经排序好了

  for(i=;i《;i++){

  printf(“%d“,nums);

  其他将数组从小到大排序的算法

  以下使用的是选择排序法实现数组从小到大排序。

  思想:从第一个数开始,每次和后面剩余的数进行比较,若升序,则如果后边的数比当前数字小,进行交换,和后面的所有的数比较、交换后,就会将当前的最小值放在当前的位置

  输入的序列为、、、、、、、、、进行一次排序后将最小的数放在了第一位(a比后面的数大,进行交换),以此类推。

  #include《stdio.h》

  intmain(void){

  intn,i,j,t;

  scanf(“%d“,&n);//n为要排序的数的个数

  //输入需要排序的数

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

  scanf(“%d“,a+i);

  for(i=;i《n-;++i)//因为每次需要和a(倒数第个元素)就行

  for(j=i+;j《n;++j)//j从i后一个开始,a进行比较

  if(a大,进行交换

  }//每排序一次,就会将a的位置

  for(j=;j《n;++j)

  printf(“%-d“,a);

您可能感兴趣的文章:

相关文章