排序演算法 交換排序 快速排序演算法

2021-08-28 08:54:26 字數 1056 閱讀 7619

//快速排序演算法

//列印資料

void print_list(int data_list , int left , int right)

printf("\n");

}//核心排序(找到基準位置)[挖坑法]

int core_sort(int data_list , int left , int right)

if(i < j )

while(i < j && data_list[i] <= base)

if(i < j )

}data_list[i] = base;//基準找到了正確的位置

return i;

}//快速排序(遞迴呼叫)

void quick_sort(int data_list , int left , int right)

//快速排序(非遞迴呼叫)

void quick_sort_nor(int data_list , int left , int right)

while(!st.empty())

//右子區間

if((base_pos + 1) < j)}}

//測試

void quick_sort_main()

;//平均情況

//int data_list = ;//最壞情況

//int data_list = ;

printf("data list init data:\n");

print_list(data_list , 0 , sizeof(data_list) / sizeof(int) - 1);

printf("quick sort begin ...\n");

quick_sort_nor(data_list , 0 , sizeof(data_list) / sizeof(int) - 1);

printf("quick sort end :\n");

print_list(data_list , 0 , sizeof(data_list) / sizeof(int) - 1);

return;

}

排序演算法 交換排序之快速排序

和歸併排序一樣,快速排序也是一種分治的遞迴演算法。快速排序的思想是 選取乙個樞紐元,將比樞紐元小的元素放樞紐元前面,把比樞紐元小的元素放後面,然後將前面的集合,後面的集合,重複之前的步驟。樞紐元的選取是一門學問,我們要將樞紐元的盡量選取為集合中間值,使得樞紐元兩邊的元素量能更加均勻,避免大小不等的遞...

排序演算法 六 快速排序(交換排序)

直接排序屬於交換排序 基本思想 1 選1個基準元素 通常是第乙個元素或最後乙個元素 將待排數列分成兩部分,一部分比基準元素小,一部分比基準元素大 2 再對這兩部分數列重複步驟1 時間複雜度 最好情況 o n logn 最壞情況,退化為氣泡排序 o n n 穩定性 不穩定 python 實現 quic...

排序演算法 交換排序(氣泡排序 快速排序)

交換排序 利用交換資料元素位置的方法進行排序的方法 基本思想 將序列中第乙個記錄與第二個記錄比較,若前乙個大於後乙個,則交換位置。然後比較第二個和第三個,第三個和第四個,以此類推,一輪之後,序列中最大的元素就到了序列最後的位置上。繼續進行第2輪,第3輪,第n 1輪。若其中某一輪途中沒有元素交換,則證...