普通選擇排序
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...