求C语言将数组元素大小排序!! C语言如何把一个整数按大小顺序插入已排好序的数组中?

C\u8bed\u8a00 \u6570\u7ec4\u5143\u7d20\u5927\u5c0f\u6392\u5e8f

#include
# define N 100
void fun(int *a,int n)
{
int i,j,max,min,px,pn,t;
for(i=0;i<n-1;i+=2)
{
max=min=a[i];
px=pn=i;
for(j=i+1;j<n;j++)
{
if(max<a[j])
{max=a[j];px=j;}
if(min>a[j])
{min=a[j];pn=j;}
}
if(px!=i)
{
t=a[i];a[i]=max;a[px]=t;
if(pn==i)pn=px;
}
if(pn!=i+1)
{t=a[i+1];a[i+1]=min;a[pn]=t;}
}
}
int main()
{
int b[N]={1,4,2,3,9,6,5,8,7};
int i,u,k;
u=9;
printf("the original array is:\n");
for(k=0;k<u;k++)
printf("%4d",b[k]);
printf("\n");
fun(b,u);
printf("\nthe result is:\n");
for(k=0;k<u;k++)
printf("%4d",b[k]);
return 0;
}

#include
void main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};//\u8fd9\u4e2a\u4e0d\u7528\u8bf4\u4e86\u5427
for (i=0;i<10;i++)//\u5341\u6b21\u5faa\u73af
{
p=i;//\u5230\u6b64p\u7b49\u4e8ei\u7b49\u4e8e0
q=a[i];//\u5230\u6b64q\u7b49\u4e8ea[0]=127
for (j=i+1;j<10;j++)//\u4e5d\u6b21\u5faa\u73af
if(q<a[j])//\u5c06q\u4e5f\u5c31\u662fa[i]\u548c\u4ed6\u540e\u9762\u7684\u90a3\u4e9b\u4e2a\u5143\u7d20\u6bd4\u8f83\uff0c\u5982\u679c\u5927\u4e8e
{
p=j;//p\u8d4b\u503c\u4e3a\u8f83\u5927\u7684\u90a3\u4e2a\u7684\u4e0b\u6807
q=a[j];//q\u8d4b\u503c\u4e3a\u8f83\u5927\u503c
}
if (p!=i)//\u5982\u679cp!=i\uff0c\u6ce8\u610f\u521d\u59cb\u65f6\u662f\u7b49\u4e8e\u7684\uff0c\u4e0d\u7b49\u4e8e\u8868\u793a\u6700\u5927\u503c\u4e0d\u662fa[0]\u662fa[p]
{
s=a[i];
a[i]=a[p];
a[p]=s;//\u8fd9\u4e09\u6b65\u4ea4\u6362a[i]\u548ca[p]\uff0c\u4e5f\u5c31\u662f\u628a\u5f53\u524d\u7684\u6700\u5927\u503c\u653e\u5230a[i]
}
printf("%d ",a[i]);
}//\u5341\u6b21\u6bd4\u8f83\u540e\uff0c\u6309\u6700\u5927\u5230\u6700\u5c0f\u4f9d\u6b21\u62cd\u597d\u4e86\u987a\u5e8f\uff0c\u8fd9\u4e2a\u53eb\u5192\u6ce1\u6392\u5e8f
printf("\ninput number:\n");
scanf("%d",&n);//\u8f93\u5165\u8981\u63d2\u5165\u7684\u6570n
for(i=0;i<10;i++)//\u5341\u6b21\u5faa\u73af
if (n>a[i])//\u5982\u679cn\u5927\u4e8ea[i]\uff0c\u8868\u793a\u53ef\u4ee5\u63d2\u5165\u5230a[i]\u4f4d\u7f6e
{
for(s=9;s>=i;s--)
a[s+1]=a[s];//\u5c06a[i]\u540e\u9762\u5c0f\u4e8en\u7684\u90fd\u540e\u79fb\uff0c\u8fd9\u4e2a\u6bd4\u8f83\u96be\u7406\u89e3\u4f60\u597d\u597d\u60f3\u60f3
break;
}
a[i]=n;//\u63d2\u5165
for(i=0;i<=10;i++)//\u4f9d\u6b21\u8f93\u51fa
printf("%d ",a[i]);
printf("\n");
}

\u4ee5\u4e0a\u662f\u6211\u52a0\u7684\u6ce8\u91ca\uff0c\u4f60\u770b\u770b\uff0c\u54b1\u4eec\u5171\u540c\u8fdb\u6b65\u5427\uff01

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

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

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

10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7、1进行冒泡,将当前最大的9放在倒数第二的位置,以此类推。

以下是具体代码:

#include <stdio.h>

int main(){

int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};

int i, j, temp, isSorted;  

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

for(i=0; i<10-1; i++){

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

for(j=0; j<10-1-i; j++){

if(nums[j] > nums[j+1]){

temp = nums[j];

nums[j] = nums[j+1];

nums[j+1] = temp;

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

}

}

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

}

for(i=0; i<10; i++){

printf("%d ", nums[i]);

}

printf("
");

return 0;

}

扩展资料:

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

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

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

输入的序列为10、2、3、4、5、6、9、8、7、1进行一次排序后将最小的数放在了第一位(a[0]与它后面的所有数进行比较,若a[0]比后面的数大,进行交换),以此类推。

以下是具体代码:

#include <stdio.h>

int main(void){

int a[1001];

int n,i,j,t;

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

//输入需要排序的数

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

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

//接下来进行排序

for(i=0;i<n-1;++i)//因为每次需要和a[i]后面的数进行比较,所以到a[n-2](倒数第2个元素)就行

{

for(j=i+1;j<n;++j)//j从i后一个开始,a[i]与a[j]进行比较

{

if(a[i]>a[j])//a[i]为当前值,若是比后面的a[j]大,进行交换

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}//每排序一次,就会将a[i](包括a[i])之后的最小值放在a[i]的位置

for(j=0;j<n;++j)

printf("%-5d",a[j]);

printf("

");

return 0;

}



#include <stdio.h>

int main(){

int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };

int a,b, text, hello;                           

for(a=0; a<10-1; a=a+1) {                 //在这里进行比较的开始的代码

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

for(b=0; b<10-1-i; b=b+1){

if(numbers[b] > numbers[b+1]){

text= numbers[b];

numbers[b] = numbers[b+1];

numbers[b+1] = text;

hello= 0;                                          

}

}

if(hello) break;                             

}

for(a=0; a<10; a=a+1){

printf("%d ", numbers[a]);

}

printf("
");

return 0;

}

扩展资料

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

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

1、参数首先必须是一个函数;

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

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

二、排序中的具体规则:

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

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

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

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

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



#include<stdio.h>

void main()
{
int a[10] = { 10,2,3,4,5,6,9,8,7,1 };
int i,j,t;
for(j=0;j<10;j++)
for(i=0;i<10-1-j;i++)
if(a[i]>a[i+1]) /* 由小到大,由大到小时改为< */
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}

void sort (int* a,int max)
{
int temp;
for (int i=0;i<max;i++)
for (int j=i+1;j<max;j++)
{
if (a[j] < a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}

  • C璇█. .缂栧啓涓涓猄ort鍑芥暟,瀹屾垚瀵规暣鍨鏁扮粍鍏冪礌鍗囧簭鎺掑垪銆
    绛旓細include <stdio.h>void sort(int a[], int n) {//閫夋嫨鎺掑簭int i,j,k,t;for(i = 0; i < n - 1; ++i) {k = i;for(j = k + 1; j < n; ++j) {if(a[k] > a[j]) k = j;}if(k != i) {t = a[i];a[i] = a[k];a[k] = t;}}}int main() {int ...
  • 鐢C璇█缂栧啓涓涓灏嗘暟缁鐢卞皬鍒板ぇ椤哄簭鎺掑垪,鑼冨洿涓5鍒10,鏁扮粍鐢遍敭鐩樿緭鍏...
    绛旓細宸叉祴璇曪紝缁撴灉濡傚浘鎵绀 include<stdio.h> int main(){ int a[6]={0,0,0,0,0,0},temp,i,j;char ch;scanf("%d",&temp);ch=getchar();while(ch!='\n'){ a[temp-5]++;scanf("%d",&temp);ch=getchar();} a[temp-5]++;for(i=0;i<6;i++)for(j=0;j...
  • C璇█sort鍑芥暟濡備綍浣跨敤
    绛旓細浜屻C璇█鏈夎嚜鏈夌殑qsort鍑芥暟銆傚姛 鑳斤細 浣跨敤蹇熸帓搴忎緥绋嬭繘琛屾帓搴 澶存枃浠讹細stdlib.h 鍘熷瀷锛 void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));鍙傛暟锛1 寰鎺掑簭鏁扮粍棣栧湴鍧 2 鏁扮粍涓緟鎺掑簭鍏冪礌鏁伴噺 3 鍚勫厓绱犵殑鍗犵敤绌洪棿澶у皬 4 鎸囧悜鍑芥暟鐨勬寚閽堬紝鐢ㄤ簬纭畾鎺掑簭鐨...
  • C璇█缂栫▼棰,鏁扮粍a涓湁15涓鍏冪礌,閿洏杈撳叆,骞跺啋娉℃硶鏈夊皬鍒板ぇ鎺掑簭
    绛旓細include<stdio.h> void main(){ int a[15],i,j,temp;printf("Input 15 numbers:\n");for(i=0;i<15;i++)scanf("%d",&a[i]);for(i=0;i<14;i++)//鍐掓场鎺掑簭 for(j=0;j<14-i;j++)if(a[j]>a[j+1]){ temp=a[j];a[j]=a[j+1];a[j+1]=temp;} for(i=0;i<...
  • C璇█鎬庢牱瀵逛簩缁鏁扮粍涓瘡涓鍏冪礌杩涜閫夋嫨鎺掑簭
    绛旓細include <stdio.h>#include "stdlib.h"#include "time.h"int main(int argc,char *argv[]){ int a[5][8],i,j,k,t,*p; printf("鎺掑簭鍓:\n"); srand((unsigned)time(NULL)); for(i=0;i<5;i++){//涓轰簩缁鏁扮粍璧嬪 for(j=0;j<8;printf("%3d",a[i][j++]...
  • ...鍐呬笅鏍囦负濂囨暟鐨鏁扮粍鍏冪礌鎸夌収浠庡皬鍒板ぇ鐨勯『搴鎺掑簭銆
    绛旓細include<stdio.h> int main(){ int a[7] ;int i , j , temp ;for( i = 0 ; i < 7 ; i ++ ){ scanf("%2d" , &a[i] ) ;} for( i = 1 ; i < 7 - 1 ; i += 2){ for( j = 1 ; j < 7 - 1 - i ; j += 2){ if(a[j] > a[j+2]){ temp =...
  • ...骞跺鏁扮粍涓殑鍏冪礌杩涜鎺掑簭 鐢c璇█缂栫▼,澶х浠!!姹傚姪鍟
    绛旓細include "stdio.h"#define N 10int main(int argv,char *argc[]){int a[N],i,j,k;printf("Please enter the %d integers...\n",N);for(i=0;i<N;scanf("%d",a+i++));printf("Sorted:\n");for(i=0;i<N;i++){for(k=i,j=k+1;j<N;j++)if(a[k]...
  • C璇█3*4鏁扮粍鎬庝箞鎺澶у皬?瑕佹瘡涓涓鍏冪礌閮芥帓!
    绛旓細浜岀淮鏁扮粍鍏冪礌瀛樺埌涓涓竴缁存暟缁勪腑锛屽啀鏉鎺掑簭 include "stdio.h"int main(){ int a[3][4]={0};int b[12]={0};int i,j,tmp;printf("璇疯緭鍏ヤ竴涓3X4鐨勬暟缁:");for(i=0;i<3;i++)// 杈撳叆瀛樺埌浜岀淮鏁扮粍 for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j...
  • c璇█ 浣跨敤鍐掓场鎺掑簭灏嗕竴缁鏁扮粍A涓殑N涓鍏冪礌鍗囧簭鎺掑垪
    绛旓細鏂规硶鍜岃缁嗙殑鎿嶄綔姝ラ濡備笅锛1銆佺涓姝ワ紝鎵撳紑C鏂囦欢锛屽畾涔変竴缁勫簭鍒楀拰瑕鎺掑簭鐨勫悇绉嶅彉閲忥紝鐒跺悗澶勭悊鎺掑簭閫昏緫锛屽叿浣撶殑浠g爜瑙佷笅鍥撅紝杞埌涓嬮潰鐨勬楠ゃ2銆佺浜屾锛屽畬鎴愪笂杩版楠ゅ悗锛屽啋娉℃帓搴忕殑閫昏緫鏄竴缁勬暟瀛椾粠绗竴涓煎紑濮嬶紝濡傛灉涓や釜鐩搁偦鏁板瓧鐨勯『搴忎笌鏈熸湜鐨勯『搴忎笉鍚岋紝鍒欎細浜ゆ崲涓や釜鏁板瓧鐨勪綅缃 閲嶅姝よ繃绋嬶紝鐩村埌...
  • 鐢C璇█鎴栨眹缂栬瑷缂栧啓涓涓灏嗘暟缁鎸夌敱灏忓埌澶х殑椤哄簭鎺掑簭鐨勭▼搴,骞跺湪DS...
    绛旓細include<stdio.h> include<malloc.h> int main(){ int num;printf("璇疯緭鍏鍏冪礌鐨勪釜鏁:");scanf("%d",&num);char *p=(char*)malloc(sizeof(char)*num);for(int i=0;i<num;i++){ printf("璇疯緭鍏ョ%d涓厓绱",i);fflush(stdin);scanf("%c",p+i);} for(int i=0;i<num;i++)...
  • 扩展阅读:从大到小排序c语言 ... c语言数组个数 ... 如何用c语言排序大小 ... c语言冒泡排序10个数 ... c语言输入6个数排序 ... 简单计算器c语言 ... 一维数组排序c语言 ... c语言数字大小排序 ... c语言数组比较大小排序 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网