C語言高階 基於陣列的排序

2021-08-17 01:55:24 字數 1368 閱讀 6249

普通選擇排序

1、實現原理和思想(公升序):

1)在未排序的陣列中,選擇首元素與其後元素進行比較,若其後元素比首元素大,則兩元素交換,直至比較到最後乙個元素,這是第一輪比較,得到首元素有序。

2)接下來從第2個,第3個元素…重複1)的步驟,直至剩下最後乙個元素,則最後乙個元素也是有序,是本組元素的最大值。

#include

#include

#include

#define len 10

typedef enumstatus;

status selectsort(int

*arr,int n)}}

return success;

}int main(void)

selectsort(arr,len);

for(int i = 0;iprintf("%5d",arr[i]);

}return

0;}

選擇排序優化——比而不換

此優化是借助記錄每次比較較小值的位置,直到最後乙個元素,然後比較較小值的位置和待交換元素位置是否相同,不同說明不是同乙個元素則交換

status selectsort(int *arr,int n)

if(idx != i)

}return success;

}

普通氣泡排序

1、氣泡排序的步驟和思想(公升序),其實就是鄰近的資料兩兩交換,第一輪下來最後乙個元素就是本組元素的最大值,接下來的元素都是重複此步驟。

//氣泡排序

status popsort(int *arr,int n)}}

}

氣泡排序優化——減少不必要的比較迴圈

思想:若一組資料,有序,那麼只需進行一輪比較,判斷這輪比較中有沒有資料進行交換,若無說明資料有序,無序再進行比較,根據這個結論,設計得到這段優化**

//氣泡排序

status popsort(int *arr,int n)

}if(flag == 0)

break;

}}

快速排序

//快速排序

status quicksort(int *p,int low,int high)

p[l] = pivot;

quicksort(p,low,l-1);//左遞迴

quicksort(p,l+1,high);//右遞迴

}}

C語言高階 排序

sunshine sunny的快樂碼奴生活 氣泡排序 插入排序 選擇排序 快速排序 排序實現方式 程式裡面盡量做到迴圈層級少於等於兩個 實現方式 具體演算法 第二層迴圈控制每次遍歷需要遍歷多少次才能找到最大值 include intmain for int i 1 i 10 i for int i ...

C語言高階之陣列

一維陣列 相關概念陣列的宣告int a 陣列的初始化 int a 10 部分初始化 int a 10 清零 陣列名稱做為整體使用的情況 陣列名稱訪問陣列成員時是做為起始位址,但是有兩種情況 求大小和取位址,是做為乙個整體。假設現在宣告乙個陣列 int a 10 那麼什麼是求大小和取位址呢。sizeo...

基於陣列的堆排序演算法的C語言實現

實現如下 int getparent int c int getleft int p int getright int p void swap int p1,int p2 void heap sort int source,int length void max heapify int source...