㈠ c語言中如何從大到小排列一個數組中的元素
先找不是0的元素個數
然後對前面部分進行排序即可。
函數如下
voidmy_sort(int*a)
{
intn,i,j;
intt;
for(n=0;a[n];n++);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
自己寫主函數 調用my_sort就好了。
㈡ c語言編程: 將一組數按從大到小的順序排序
#include <stdio.h>
main()
{
int x;
printf("請輸入要排序數字個數:");
scanf("%d",&x);
int i,j,k,a,b,num[x];
printf("輸入數據:");
for(i=0;i<x;i++)
scanf("%d",&num[i]);
for(j=0;j<x;j++)
{
for(k=j+1;k<x;k++)
if(num[k]>num[j])
{
a=num[j];
num[j]=num[k];
num[k]=a;
}
}
for(b=0;b<x;b++)
printf("%d ",num[b]);
return 0;
}
(2)c語言各列元素和大小排列擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:
#include<math.h>//一些數學函數的原型,以及相關的類型和宏
如果需要包含針對程序所開發的源文件,則應該使用第二種格式。
採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。
㈢ C語言如何從大到小排序呢
給你提供幾個比較簡單的演算法思路。
首先糾正一下,你要排序的對象不要存在單個變數里,要存在數組里,這樣才能用循環的方式取用。
插入排序
如果你打過牌,這種排序你就一定能理解。從未排序的部分取出一個元素來,然後插入到已經排好序的部分。就這樣一個一個的查入。
2.選擇排序
從未排序的部分選出最大(最小)的一個放在已排好序的部分的最後。然後重復此步驟。
3.歸並排序
排一個很長的序列可能比較麻煩,我就把他們分成兩份,把他們分別排好,然後再把他們接起來,接起來就很簡單了。而這兩個怎麼排呢,我再把他們分別分成兩個……這就要用到遞歸了。
總結一下,前兩個時間復雜度是平方,後一個是n*logn 。還有很多其他排序方法,其中冒泡排序比較費時但是很好寫,如果你不是想知其所以然,直接網路冒泡套用一下就行。
如果想系統的學習演算法,推薦你讀演算法導論,就是那本很厚的。講的很好。
㈣ C語言 數組元素大小排序
#include <stdio.h>
# 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: ");
for(k=0;k<u;k++)
printf("%4d",b[k]);
printf(" ");
fun(b,u);
printf(" the result is: ");
for(k=0;k<u;k++)
printf("%4d",b[k]);
return 0;
}
㈤ C語言比較大小排序問題
#define N 10//宏定義,用N代替10
#include "stdio.h"//標准輸入輸出庫,你在控制台輸入數據和顯示數據用的
main()//主函數
{
int a[N],i,j,temp;//聲明需要排序的數組a和排序用的的一些「小工具」,i、j、temp
printf("請輸入%d個整數:\n",N);
for(i=0;i<N;i++)//這個循環是和用戶交互,手動輸入10個數理組成數組
scanf("%d",&a[i]);
for(i=0;i<N-1-i;i++)//i從前往後數
for(j=0;j<N-1-i;j++)//在每一個i(比如0,比如1)下從前往後數j
if(a[j]>a[j+1])//如果j比他後邊的大,交換
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}//兩數前後互換
//上邊這個循環就是從前往後數a的元素,比如到a[0],那麼最大的數移到最後一位;在比如a[1],倒數第二大的數移到倒數第二位(因為最大的在後邊,你移步過去了?)
//為什麼要走這么多次。每次j的循環都好比一個波浪,一次只能保證一個最大數到了最後一位,其他的可能還是亂序,所以要一浪接一浪。
//這個演算法的巧妙之處在於,i只走一半,也就是i從0到4,而j每次也不用到最後一位(j<N-1-i),因為最後那i+1位已經排好了
//比較次數,i=0時9次,i=1時8次,i=2時7次,i=3時6次,i=4時5次,一共35次
printf("排序之後的數據序列:\n");
for(i=0;i<N;i++)//把排序後的數列顯示出來,%5d代表每一個數佔5位,就是排列的整齊點。
printf("%5d",a[i]);
printf("\n");
}
#include"stdio.h"
#define N 10
main()
{
int a[N],i,j,r,temp;
printf("請輸入%d個整數:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)//用i遍歷數組a。
{r=i;//局部的r值,i從0到8每次不同,r也不同。
for(j=i+1;j<N;j++)//j是從i當前的值一直到最後(前一種排序時每次j的結尾位置不同,到9,到8.到7。)
if(a[j]<a[r])r=j;//用r標記最小的一個值,
if(r!=i)//如果這個最小的值不是a[i],對換,讓i所在值變成最小,意思是a[0]最小,a[1]第二小,以此類推
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之後的數據序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
//i=0,j循環9次;i=1,j循環8次。。。。一共45次
}
我把函數改了,這樣可以測試,你去跑一下就明白過程了
#include"stdio.h"
#define N 10
main()
{
int count = 0;
int a[N],i,j,r,temp;
printf("請輸入%d個整數:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)
{r=i;
for(j=i+1;j<N;j++){
if(a[j]<a[r])r=j;
count++;
printf("i:%d\tj:%d\tcount:%d\n",i,j,count);
}
if(r!=i)
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之後的數據序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n%d\n",count);
}
㈥ C語言編程 數組從大到小排列
我是這樣想的啊,僅供參考
定義兩個變數 maxNum 和 minNum(類型應該是int吧)
然後把數組的第一個元素賦給這個兩個變數
進行FOR循環(從第二個元素開始)
比較當前元素與最大最小元素的大小
大了賦給maxNum
小了賦給minNum
用偽代碼表示:
maxNum=a[0]
minNum=a[0]
for(i=1;i<N;i++)
{
if(a[i]<minNum)
minNum=a[i]
if(a[i]>maxNum)
maxNum=a[i]
}
printf(最大值是maxNum,最小值是minNum)
不一定對
個人想法
㈦ C語言將其元素按由大到小排序
#include
#include
typedef
struct
_n{
int
data;
struct
_n*n;}nude;
nude*
c(void){
return
(nude*)malloc(sizeof(nude));}
nude
*h,*b;
void
pai(nude*
h){
nude
*p,*q;
int
temp;
for(p=h;p!=b;p=p->n)
for(q=p->n;q!=b;q=q->n)
if(p->data
data){
temp=q->data;
q->data=p->data;
p->data=temp;}}
int
main(){
int
n,t;
h=c();
b=h;
printf("輸入數字(以'-1'結尾)\n");
while(scanf("%d",&t)==1&&t!=-1){
b->data=t;
b->n=c();
b=b->n;}
pai(h);
printf("輸出:\n");
while(h!=b){
printf("%d
",h->data);
h=h->n;}
return
0;}
㈧ C語言如何輸入十個數,按從大到小順序排列!
用選擇排序法編寫c語言,實現從鍵盤上輸入10個數,按從大到小的順序排序輸出。代碼如下:
#include<stdio.h>
int main()
{
int i,j,a[10],t;
printf("輸入數");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10;j++)
if (a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("從大到小");
for (i = 0; i < 10; i++)
printf("%2d", a[i]);
return 0;
}
(8)c語言各列元素和大小排列擴展閱讀:
代碼還可以設計,如下:
#include<stdio.h>
int main()
{
int a[10],i,j,t;//定義數組;
for(i=0;i<10;i++){
scanf("%d",&a[i]);//給數組賦值;
}
for(i=0;i<9;i++)//10個數,進行9輪比較;
for(j=0;j<10-i;j++){//第一個數比較9次,依次遞減;
if(a[j]>a[j+1]) {//交換值;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);//輸出數組的值;
}
return 0;
}
}
printf("the sorted numbers: ");
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf(" ");
}
㈨ C語言採用選擇法對數組元素按從大到小的順序排列
#include<stdio.h>
#define SIZE 10
main()
{
int a[SIZE]={3,8,7,6,5,0,
1,2,9,4};
int max,pos;
int i,j;
printf("數組中原存放數據是:\n");
for(i=0;i<SIZE;i++)
printf("%3d",a[i]);
for(i=0;i<SIZE-1;i++)
{
max=a[i];
pos=i;
for(j=i+1;j<SIZE;j++)
if(a[j]>max)
{
max=a[j];
pos=j;
}
a[pos]=a[i];
a[i]=max;
printf("\n經過第%d次排序後,數組變為:\n",i+1);
for(j=0;j<SIZE;j++)
printf("%3d",a[j]);
}
}