快速排序(C語言)

來源:互聯網
上載者:User

標籤:快速排序   遞迴   非遞迴   

非遞迴:

#include <stdio.h>#include <stdlib.h>int partition(int s[], int i, int j){int value = 0;int flag = 1; //判斷該從頭迴圈還是尾迴圈value = s[i];while(i<j){switch(flag){case 0:if(s[i] < value)i++;else{s[j--] = s[i];flag = 1;}break;case 1:if(s[j] >= value)j--;else{s[i++] = s[j];flag = 0;}break;}}s[i] = value;return i;}void quick_sort(int s[], int l, int r){int *stack = (int *)malloc(sizeof(int)*(r-l+1));int top = 0;int index1, index2;int res;stack[top++] = r;stack[top++] = l;while(top!=0){index1 = stack[--top];index2 = stack[--top];res = partition(s, index1, index2);if(res != index2) //後部分partiton未結束{stack[top++] = index2;stack[top++] = res+1;}if(res != index1) //前部分partion未結束{stack[top++] = res-1;stack[top++] = index1;}}free(stack);stack = NULL;}int main(){int number[10] = {8, 1, 8, 4, 9, 5, 8, 10, 3, 6};quick_sort(number, 0, 9);int i;for(i=0; i<10; i++){printf("%d, ", number[i]);}printf("\n");return 0;}



遞迴:

#include <stdio.h>#include <stdlib.h>int partition(int s[], int i, int j){int value = 0;int flag = 1; //判斷該從頭迴圈還是尾迴圈value = s[i];while(i<j){switch(flag){case 0:if(s[i] < value)i++;else{s[j--] = s[i];flag = 1;}break;case 1:if(s[j] >= value)j--;else{s[i++] = s[j];flag = 0;}break;}}s[i] = value;return i;}void quick_sort(int s[], int l, int r){int res;if(l<r){res = partition(s, l, r);quick_sort(s, l, res-1);quick_sort(s, res+1, r);}}int main(){int number[10] = {8, 1, 8, 4, 9, 5, 8, 10, 3, 6};quick_sort(number, 0, 9);int i;for(i=0; i<10; i++){printf("%d, ", number[i]);}printf("\n");return 0;}


快速排序(C語言)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.