當前位置:首頁 » 編程語言 » 降序法排列c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

降序法排列c語言

發布時間: 2022-08-15 17:57:15

c語言 降序排列 快速排序

_q_sortc改為q_sortc即可運行——。-

額···那改下
void q_sortc(struct complex *list,int num1,int num2)
{
int a,p,q; struct complex tmp;
p=num1;
q=num2;
a=sqrt(list[(num1+num2)/2].r * list[(num1+num2)/2].r + list[(num1+num2)/2].i * list[(num1+num2)/2].i);
do{
for( ; sqrt(list[p].r * list[p].r + list[p].i * list[p].i)>a;p++);
for( ; sqrt(list[q].r * list[q].r + list[q].i * list[q].i)<a;q--);
if(p>=q){ //這里改為p <= q
tmp=list[p];
list[p]=list[q];
list[q]=tmp;
p++;
q--;
}
}while(p>=q); //這里改為p <= q
if(num1<q) q_sortc(list,num1,q); if(p<num2) q_sortc(list,p,num2);
}

② 用C語言編寫,輸入10個數按降序排列

源程序代碼如下:

#define _CRT_SECURE_NO_WARNINGS//VS環境下需要,VC不需要

#include<stdio.h>//頭文件;

int main()

{

int i = 0;

int j = 0;

double temp = 0;

double a[10] = { 0 };//定義三個變數和一個長度為10的數組;

printf("請輸入十個數: ");//顯示「請輸入十個數」

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

{

scanf("%lf", &a[i]);//從鍵盤上輸入十個數送到數組;

}

for (i = 1; i < 10; i++)//for循環,進行9次循環;

{

for (j = i - 1; j >= 0; j--)//for循環,在每次大的循環中,a[i]從a[1]依次與它前面的數比較;

{

if (a[j + 1] > a[j])

{

temp = a[j + 1];

a[j + 1] = a[j];

a[j] = temp;//如果a[j + 1]>a[j],則把這兩個數組元素互換,目的把最大的數放到前邊;

}

else

{

break;

}

}

}

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

{

printf("% lf ", a[i]);//輸出排好順序的十個數;

}

return 0;//返回值為0;

}

程序運行結果如下:


(2)降序法排列c語言擴展閱讀:

其他實現方法如下:

#include<stdio.h>

int mysort(int *a, int n)

{

int i, j, temp;

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

{

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

{

if (a[j] > a[j + 1])

{

temp = a[j + 1];

a[j + 1] = a[j];

a[j] = temp;

}

}

}

return 0;

}

int main()

{

int a[10];

int i, j;

printf("input 10 numbers: ");

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

{

printf("the number%d is:", i + 1);

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

fflush(stdin);

}

mysort(a, 10);

for (i = 9; i >= 0; i--)

printf("%3d", a[i]);

printf(" ");

return 0;

}

③ c語言 選擇法對10個整數降序排列

//選擇法排序
#include <stdio.h>
main(void)
{
int a[10],i,j,k,t;
printf("請輸入排序數列:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<10-1;j++)
{
k=j;
for(i=j+1;i<10;i++)
if(a[k]>a[i])
k=i;
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
printf("從大到小排序:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}

④ C語言用排序法給十個數降序排列

#include<stdio.h>
int main()
{
int a[10],temp;
int i,j,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(a[j]>a[k])
k=j;
if(i!=k)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
return 0;
}
不懂可以追問

⑤ c語言 用一個函數實現用冒泡法對十個整數升序和降序排列 麻煩寫全些

#include<stdio.h>
voidsort1(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
voidsort2(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
intmain()
{inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf(" ");
sort1(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf(" ");
sort2(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf(" ");
return0;
}

⑥ 關於C語言進行降序排列

#include<stdio.h>
#include
<math.h>
//從鍵盤上輸入10個整數,要求用插入法實現對它們進行降序排列。
//(主函數完成輸入輸出功能,排序用函數sort()來實現)。
void
sort(int
a[],int
n)
{
int
i,j,temp;
for(i=0;i<n-1;i++)
{
temp=a[i+1];
j=i;
while(j>-1&&temp<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
int
main()
{
int
i,a[10]={0};
printf("請輸入10個數據:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
return
0;
}

⑦ 如何用C語言將一組數進行降序排列

假設有n個數。
#include<stdio.h>
void min(int *a,int *b)
{
int data;
if(*a<*b)
{
data=*a;
*a=*b;
*b=data;
}
}
int main()
{
int t[10];//假設n=10,可以設置為其他數
int i,j,n=10;
for(i=0;i<n;i++)
scanf("%d",&t[i]);
for(i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
{
min(&t[j],&t[j+1]);
}
}
for(i=0;i<n;i++)
printf("%3d",t[i]);
printf("\n");
return 0;
}

⑧ C語言,給一個數列降序排列

額。。。。你的第二個for循環有問題吧,你應該想控制j的值小於5,而不是i的值小於5,i小於5的話,當j》5,是符合條件的。此時數組越界了(你定義的數組時num【5】),程序自然報錯了。而且這也構成死循環了。。。。。。。

⑨ c語言對從鍵盤輸入的十個整數進行降序排序,排序後輸出第二大的數,編寫fun函數

排序有挺多方法的,例如:冒泡排序法、選擇排序法

以下使用選擇排序

#include<stdio.h>

voidfun(inta[],intn)
{
inti,j,k,tmp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;++j)
if(a[j]>a[k])k=j;
if(k!=i)
{
tmp=a[k];a[k]=a[i];a[i]=tmp;
}
}
}

intmain()
{
inta[10];
inti;
for(i=0;i<10;i++)scanf("%d",&a[i]);
fun(a,10);
for(i=0;i<10;i++)printf("%d ",a[i]);
printf("第二大的數是:%d",a[1]);
return0;
}

⑩ C語言:隨機生成N個四位數並按降序排列,分別輸出排序前後的N個數且每行10個;排序用選擇法;怎麼寫

代碼文本:

#include "stdio.h"

#include <stdlib.h>

#include "time.h"

#define N 37

int main(int argc,char *argv[]){

int a[N];

void myset(int *,int);

void mysort(int *,int);

void myout(int *,int,int x=0);

myset(a,N);

myout(a,N);

mysort(a,N);

myout(a,N,1);

return 0;

}

void myset(int *p,int n){//隨機數生成函數

srand((unsigned)time(NULL));

for(n--;n>=0;p[n--]=rand()%9000+1000);

}

void mysort(int *p,int n){//選擇法排序

int i,j,k;

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

for(k=i,j=k+1;j<n;j++)

if(p[k]<p[j])

k=j;

if(k-i)

j=p[k],p[k]=p[i],p[i]=j;

}

}

void myout(int *p,int n,int x=0){//輸出函數

int i,k;

puts(x==0 ? "Before ordering:" : "After ordering:");

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

printf(++k%10 ? "%5d" : "%5d ",p[i]);

if(k%10)

putchar(' ');

}

供參考……