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

c語言中排序怎麼表達

發布時間: 2022-04-11 11:00:59

c語言中如何將10個字元串進行排序

#include<stdio.h>

#include<string.h>

int main()

{

int j,k,i,t,n;

char s[10][10],b[10][10];

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

{

scanf("%s",s[i]);

}

n=strlen(s[1]);

k=0;

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

{

for(j=0;j<9-i;j++)

if(strcmp(s[j],s[j+1])>0)

{

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

b[j][k]=s[j][k];

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

s[j][k]=s[j+1][k];

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

s[j+1][k]=b[j][k];

}

}

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

{

printf("%s ",s[i]);

}

return 0;

}

運行效果:

(1)c語言中排序怎麼表達擴展閱讀:

scanf函數用法:

scanf("輸入控制符",輸入參數);

功能:將從鍵盤輸入的字元轉化為「輸入控制符」所規定格式的數據,然後存入以輸入參數的值為地址的變數中。

用scanf()函數以%s格式讀入的數據不能含有空白符時,所有空白符都被當做數據結束的標志。所以題中函數輸出的值只有空格前面的部分。

如果想要輸出包括空格在內的所有數據,可以使用gets()函數讀入數據。gets()函數的功能是讀取字元串,並存放在指定的字元數組中,遇到換行符或文件結束標志時結束讀入。換行符不作為讀取串的內容,讀取的換行符被轉換為字元串結束標志''。

㈡ c語言中排序

按你這種寫法是一定要排三次,不過你可以調用庫函數里的排序函數,那樣你可以只寫一個比較函數,在比較函數里根據flag的值來判斷優先次序

㈢ 如何用C語言排序

試想一下,如果讓你自己設計qsort函數,需要些什麼東西,首地址要有吧,總共有幾個元素要有吧,每個元素佔多大的內存要有吧(想想就知道函數內部要根據內存塊的大小交換數據實現排序),最後一個規則總要有吧,qsort的靈活性在於規則是活的不是死的,其實大多數語言的排序都是類似的機制啦。。。看下qsort的原型
void
qsort(void
*base,int
nelem,int
width,int
(*fcmp)(const
void
*,const
void
*));
base就是所謂的首地址,nelem就是元素個數,width,就是每個元素的大小,fcmp是一個函數指針,這里函數的定義要類似於int
cmp(const
void*a,const
void*b),其實很多人不知道怎麼使用qsort主要是在於對這個函數不懂得如何寫,其實想想就知道函數把每個元素的地址扔給比較函數,根據比較函數的返回值來決定到底是a在前面還是b在前面,所以在函數裡面要先取出值,所以一般的寫法就是
int
cmp(const
void*a,const
void*b)
{
return
*(t*)a-*(t*)b;
}
先強制轉換成t類型再用取值符號*取出指,函數之所以用空指針是因為空指針可以指向任何類型,對於基本類型,只要將t修改為基本類型就行了,對於結構體之類的的指針,則return
((t*)a)->x-((t*)b)->x;其中t就是結構體的名稱,x就是你要比較的欄位,當然如果你要降序的話就將ab顛倒就行了,說了這么多,寫一個例子,比如要對下面的數組排序
int
a[5]={2,10,5,4,0};
qsort(a,5,sizeof(int),cmp);
比較函數
int
cmp(const
void*a,const
void*b)
{
return
*(int*)a-*(int*)b;
}
。。呵呵,啰嗦了點。希望對你有幫助

㈣ C語言排序有哪些方法 詳細點

排序方法嗎應該和語言沒有太緊密的關系,關鍵看數據類型和結構,一般常用的排序方法有:
1 插入排序——細分的話還可有(1)直接插入排序(2)折半插入排序(3)希爾排序(4)2-路插入排序(5)表插入排序 等
2 比較排序——如冒泡排序,快速排序 等
3 選擇排序——如簡單選擇排序,樹形選擇排序,堆排序 等
4 歸並排序——簡單的如 2-路歸並排序 等
5 基數排序
等等
一般情況下,如果數據不大,只是簡單的自己練習或簡單的幾個十幾個或幾十個數據的話,效率分不出多少來,常用冒泡,直接插入,簡單選擇這幾種簡單的時間復雜度為O(n2)的排序方法就可以。這里舉一個簡單的小例子——比較排序中的——冒泡排序 如下:

//其中a[]是用於排序的數組變數的首地址,也即數組名,a[0]不放數據,
//用於交換時的輔助存儲空間,數據從a[1]開始存放,n表示存放的數據個數
void bubble_sort(int a[], int n){
int i = 0, j = 0, change = 0;//change用於記錄當前次比較是否進行了交換
for(i = n - 1, change = 1; i >= 1 && change; i--){//如果change是0,即已經排好序不用再進行比較了
change = 0;//將當前次的change賦值為0,記錄不交換即下次不用比較了
for(j = 1; j <= i; j++){//內循環依次將相鄰的兩個記錄進行比較
if(a[j] > a[j+1]){//小的前移,最大的移動到本次的最後一項去
a[0] = a[j+1];
a[j+1] = a[j];
a[j] = a[0];
change = 1;//進行了交換的標記
}
}
}
}

㈤ C語言中選擇排序法具體是怎樣的

選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基於此思想的演算法主要有簡單選擇排序、樹型選擇排序和堆排序。
簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。

㈥ C語言中 字元串怎麼排序

直接藉助冒泡排序,選擇排序即可進行字元串的排序,但是需注意的是,字元串的比較需要藉助strcmp函數完成,而字元串的復制需要藉助strcpy函數完成。

示例代碼如下:

#include"stdio.h"
#include"string.h"
voidsort(chararray[][20],intn);
main(void)
{
charstr[10][20];
inti,j,k,n;
printf("inputn(n<=10):");
scanf("%d",&n);
printf("input%dstring:",n);
for(i=0;i<n;i++)
gets(str[i]);//輸入N個字元串
sort(str,n);//對輸入的字元串排序
printf("sortstring: ");
for(i=0;i<n;i++)
puts(str[i]);
return0;
}
voidsort(chararray[][20],intn)//定義排序函數
{
chartemp[20];
inti,j,k;
for(i=1;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(array[k],array[j])>0)
k=j;
if(k!=i)
{
strcpy(temp,array[i]);//字元串交換順序
strcpy(array[i],array[k]);
strcpy(array[k],temp);
}
}
}

㈦ C語言中有哪些經典的排序方法

有選擇排序法和冒泡排序法兩種,都是非常經典的排序方法,都是作為一個程序員必須掌握的排序方法。
這兩種的區別在比較的邏輯不相同,因此if中的判斷條件與for循環中的代碼也是不相同的,要根據實際情況選擇不同的排序方法。

㈧ C語言中的選擇排序法是什麼

選擇排序(Selection sort)是一種簡單直觀的排序演算法。工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。

以下是一個實現選擇排序的例子:

#defineSWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))
//將list中的n個數據,通過選擇排序演算法排序。
voidselete_sort(intlist[],intn)
{
inti,j,min,temp;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)//找出最小元素的下標。
if(list[j]<list[min])
min=j;
SWAP(list[i],list[min],temp);//交換最小元素到當前起始位置。
}
}