赞
踩
- #include<stdio.h>
-
- void Swap(int*a,int*b)
- {
- int tmp=*a;
- *a=*b;
- *b=tmp;
- }
-
-
- int PartSort1(int* a, int left, int right)//快排
- {
- int keyi = left;
- while (left < right)
- {
- //找小
- while (left < right && a[right] >= a[keyi])
- {
- --right;
- }
-
- //找大
- while (left < right && a[left] <= a[keyi])
- {
- ++left;
- }
- Swap(&a[left], &a[right]);
- }
- Swap(&a[keyi], &a[left]);
- return left;
- }
-
-
-
- void Quicksort(int*a,int begin,int end)
- {
- if(begin>=end)
- return 0;
-
- int key=PartSort1(a,begin,end);
- Quicksort(a,begin,key-1);
- Quicksort(a,key+1,end);
- }
-
-
- int main()
- {
- int a[10]={0,7,9,8,5,6,4,3,2,1};
-
- Quicksort(a,0,9);
-
- for(int i=0;i<10;i++)
- {
- printf("%d ",a[i]);
- }
-
- return 0;
- }
- #include<stdio.h>
-
- void Swap(int* a, int* b)
- {
- int tmp = *a;
- *a = *b;
- *b = tmp;
- }
-
-
- int PartSort2(int* a, int left, int right)//快排
- {
- int key = a[left];
- int pit = left;
- while (left < right)
- {
- while (left<right && a[right]>key)
- right--;
-
- a[pit] = a[right];
- pit = right;
-
- while (left < right && a[left] <key)
- left++;
-
- a[pit] = a[left];
- pit = left;
-
- }
- a[pit] =key;
- return pit;
-
- }
-
-
-
- void Quicksort(int* a, int begin, int end)
- {
- if (begin >= end)
- return 0;
-
- int key = PartSort2(a, begin, end);
- Quicksort(a, begin, key - 1);
- Quicksort(a, key + 1, end);
- }
-
-
- int main()
- {
- int a[10] = { 0,7,9,8,5,6,4,3,2,1 };
-
- Quicksort(a, 0, 9);
-
- for (int i = 0; i < 10; i++)
- {
- printf("%d ", a[i]);
- }
-
- return 0;
- }
- #include<stdio.h>
-
- void Swap(int* a, int* b)
- {
- int tmp = *a;
- *a = *b;
- *b = tmp;
- }
-
-
- int PartSort3(int* a, int left, int right)//快排
- {
- int key = left;
- int prev = left;
- int cur = left + 1;
- while (cur <= right)
- {
- if (a[cur] < a[key]&& a[++prev] != a[cur])
- Swap(&a[prev], &a[cur]);
- cur++;
- }
- Swap(&a[prev], &a[key]);
- return prev;
-
- }
-
-
-
- void Quicksort(int* a, int begin, int end)
- {
- if (begin >= end)
- return 0;
-
- int key = PartSort3(a, begin, end);
- Quicksort(a, begin, key - 1);
- Quicksort(a, key + 1, end);
- }
-
-
- int main()
- {
- int a[10] = { 0,7,9,8,5,6,4,3,2,1 };
-
- Quicksort(a, 0, 9);
-
- for (int i = 0; i < 10; i++)
- {
- printf("%d ", a[i]);
- }
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。