當前位置:首頁 » 編程語言 » c語言s在某范圍內從小到大排序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言s在某范圍內從小到大排序

發布時間: 2022-08-22 00:49:33

Ⅰ 求c語言將數組元素大小排序!!

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;

}

(1)c語言s在某范圍內從小到大排序擴展閱讀:

其他將數組從小到大排序的演算法

以下使用的是選擇排序法實現數組從小到大排序。

思想:從第一個數開始,每次和後面剩餘的數進行比較,若升序,則如果後邊的數比當前數字小,進行交換,和後面的所有的數比較、交換後,就會將當前的最小值放在當前的位置

輸入的序列為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;

}

Ⅱ 在C語言中 編寫一個程序實現從小到大排序

#include<stdio.h>
#include<stdlib.h>

intcmp(constvoid*a,constvoid*b)
{
return*(int*)a-*(int*)b;
}

intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;

qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);

for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);

printf(" ");

return0;
}

如果要自己實現排序函數的話

#include<stdio.h>

voidqsort(int*a,intleft,intright)
{
intp=(left+right)/2;//以中間數作為主元
intk=a[p];
inti=left,j=right;

while(i<j)
{
//從左邊開始將大於主元的數放在主元右邊
while((i<=p)&&(a[i]<=k))
++i;
if(i<p)
{
a[p]=a[i];
p=i;
}

//從右邊開始將小於主元的數放在左邊
while((j>=p)&&(a[j]>=k))
--j;
if(j>p)
{
a[p]=a[j];
p=j;
}
}

a[p]=k;
//如果左邊的數大於1個則遞歸左邊
if(p-left>1)
qsort(a,left,p-1);
//如果右邊的數大於1個則遞歸右邊
if(right-p>1)
qsort(a,p+1,right);
}

intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;

qsort(a,0,sizeof(a)/sizeof(int)-1);

for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);
printf(" ");

return0;
}

Ⅲ C語言:對輸入的十個數進行從小到大排序

1、首先打開編輯軟體,新建一個c程序空文件,引入標准庫和主函數,定義一個QuickSort函數用來排序,下面首先編寫排序函數的:

Ⅳ C語言:用選擇排序法對一個數組里的數進行排序,從小到大,要求選出小的進行排序

#include<stdio.h>

intmain()

{

inti=0;

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

intj=0;

inttmp=0;

intm=sizeof(a)/sizeof(a[0]);//s數組大小

for(i=0;i<m-1;i++)//比較m-1次

{

for(j=0;j<m-i-1;j++)//最後一次比較a[m-i-1]與a[m-i-2]

{

if(a[j]>a[j+1])//如果a[j]比a[j+1]大則交換內容

{

tmp=a[j+1];

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

a[j]=tmp;

}

}

}

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

{

printf("%d",a[i]);//列印

}

printf(" ");

return0;

}

(4)c語言s在某范圍內從小到大排序擴展閱讀

C語言排序法

把一個數組進行排序可以使用選擇排序法。選擇排序法的原理在是每一趟循環尋找數組中最小的數的下標,然後按照遞增的順序放入數組中。

循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位,這樣就排好了一個元素。

需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。

Ⅳ C語言程序從小到大排序要怎麼寫啊

冒泡排序法: /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)//9+8+'''+1=45次 for(j=0;j<=8-i;j++) { if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ //選擇排序法 /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)// for(j=i+1;j<=9;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ // 進行插入排序演算法 #include<iostream.h> void main() { int a[10],i,j,n=10,index,inserter; for(j=0;j<=9;j++) { cout<<"a["<<j<<"]="; cin>>a[j]; } for(i=1;i<n;i++) { inserter=a[i]; index=i-1; while(index>=0&&inserter<a[index]) { a[index+1]=a[index]; index--; } a[index+1]=inserter; } for(j=0;j<=9;j++) cout<<a[j]<<'\n'; }

Ⅵ c語言將數組從小到大排序

#include<stdio.h>
intmain()
{
inta[20];
inti,j,temp;
int*p=&a[0];
int*d;
intn;
printf("請輸入數組長度");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("請輸入這個數組 ");
scanf("%d",p++);//<=================

}
for(p=a;p<a+n;p++)//<=================
{
for(d=p+1;d<a+n;d++)//<=================
{
if(*p>*d)
{
temp=*p;
*p=*d;
*d=temp;
}
}
}
p=a;
for(p;p<a+n;p++)
{
printf("%d ",*p);

}
return0;
}

Ⅶ C語言~十個數字從小到大怎麼排列~從大到小呢~

//要求任意輸入10個數,然後按從小到大順序輸出
#include <stdio.h>
int main()
{
int a[10];
int i,j;
int temp;
printf("請輸入10個整數:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列後順序為:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf(" ");
return 0;
}

Ⅷ 用C語言編程,將字元串s中的所有字元按ASCII值從小到大重新排序後,將排序後的字元串輸出

代碼如下:

#include<stdio.h>
#include<string.h>

intmain()
{
charstr[]="HelloWorld!",ch;
inti,j,len;

len=strlen(str);

for(i=0;i<len-1;i++){
for(j=i+1;j<len;j++){
if(str[i]>str[j]){
ch=str[i];
str[i]=str[j];
str[j]=ch;
}
}
}

printf("%s ",str);

return0;
}

運行結果:

Ⅸ C語言中輸入一串字元,怎樣讓它按照字母從小到大的順序排列

這可以把字元串輸入到字元數組中,然後採用排序的方法來實現:
(需要包含<string.h>頭文件)
char t,s[200];
int i,i;
gets(s);
for(i=0;i<strlen(s)-1;i++)
for(j=0;j<strlen(s)-1-i;j++)
if(s[j]>s[j+1])
{t=s[j]; s[j]=s[j+1]; s[j+1]=t;}
puts(s);