c語言數組排序算法實現,c語言利用數組排序

本文目錄一覽:

求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; i10-1; i++){

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

for(j=0; j10-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; i10; i++){

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

}

printf(“\n”);

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;in;++i)

scanf(“%d”,a+i);

//接下來進行排序

for(i=0;in-1;++i)//因為每次需要和a[i]後面的數進行比較,所以到a[n-2](倒數第2個元素)就行

{

for(j=i+1;jn;++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;jn;++j)

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

printf(“\n\n”);

}

return 0;

}

C語言數組排序方法

選擇排序的原理是,每次從待排序數字中挑選出最大(最小)數字,放在有序序列的末尾。實際操作中,只需要在這個數組中將挑出來的數字與前面的數字交換即可。例如:4

1 5

2 3找到最小的1,1和4交換1

4 5

2

3找到最小的2,2和4交換1

2

5

4

3找到最小的3,3和5交換1

2

3

4

5找到最小的4,4和4交換(不交換也可)可見,選擇排序需要一個雙重循環來完成,因此它的複雜度是O(n^2)在數據量比較大時,不建議使用這種排序方法。 其他排序方法有很多,你甚至可以自己根據不同數據規模設計不同的排序方法。比較常見的有冒泡排序,插入排序(這兩種和選擇排序一樣,都是O(n^2)),二分法插入排序(降低了一些複雜度,但是涉及到大規模數據移動,效率依然不高),快速排序(平均複雜度O(nlogn),但是不穩定,最壞情況O(n^2)),隨機化快速排序(很大程度上避免了最壞情況的出現),堆排序(O(nlogn),編程複雜度高),基數排序(理論複雜度O(n),實際要比這個慢。甚至能應付字符串排序,但是編程複雜度高,牽扯到其他數據結構),桶排序(O(n),編程簡單,效率高,但是應付的數據範圍不能太大,受到內存大小的限制)。 平時比較常用的就是快速排序,程序簡單,效率也可以接受。 這是我了解的一些東西,希望對你有幫助。

C語言數組排列怎麼做?

對n個數排序,先輸入n,再輸入n個數。

選擇排序

#includestdio.h

int main()

{

int a[100];

int i,j,t,p,n;

while (~scanf(“%d”,n))

{

for (i=0;in;i++)

scanf(“%d”,a[i]);

for (i=0;in-1;i++)

{

p=i;

for (j=i+1;jn;j++)

if (a[p]a[j])

p=j;

if (p!=j)

{

t=a[p];a[p]=a[i];a[i]=t;

}

}

for (i=0;in;i++)

if (i!=n-1)

printf(“%d “,a[i]);

else

printf(“%d\n”,a[i]);

}

return 0;

}

冒泡排序

#includestdio.h

int main()

{

int i,j,t,n;int a[1000];

scanf(“%d”,n);

for(i=0;in;i++)

scanf(“%d”,a[i]);

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

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

if(a[i]a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

for(i=0;in;i++)

{

if (i!=n-1)

printf(“%d “,a[i]);

else

printf(“%d\n”,a[i]);

}

return 0;

}

原創文章,作者:ONSV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/140518.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ONSV的頭像ONSV
上一篇 2024-10-04 00:23
下一篇 2024-10-04 00:23

相關推薦

  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python實現爬樓梯算法

    本文介紹使用Python實現爬樓梯算法,該算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29

發表回復

登錄後才能評論