赞
踩
基本思想:
每次比较相邻元素,如果他们的顺序错误就把他们交换过来;
#include
基本思想:
从数列中挑出一个元素,称为基准,重新排列数组,所有比基准值小的元素摆放在基准值前面,所有比基准值大的放在基准值后面(相同的数可以放到任意一边)。
- #include<stdio.h>
- #define N 10
-
- int p[101];
-
- void quick_sort(int left,int right);
-
- int main()
- {
- int i,j;
- printf("please enter ten numbers:n");
-
- for(i=1;i<=N;i++)
- {
- scanf("%d",&p[i]);
- }
-
- quick_sort(1,N);
-
- printf("The correct order isn");
-
- for(i=1;i<=N;i++)
- {
- printf("%d ",p[i]);
- }
-
- return 0;
- }
-
- void quick_sort(int left,int right)
- {
- int i,j,t,temp;
-
- if(left>right)
- return;
-
- temp=p[left];
- i=left;
- j=right;
-
- while(i!=j)
- {
- while(i<j && p[j]>=temp)
- j--;
- while(i<j && p[i]<=temp)
- i++;
-
- if(i<j)
- {
- t=p[i];
- p[i]=p[j];
- p[j]=t;
- }
- }
-
- p[left]=p[i];
- p[i]=temp;
-
- quick_sort(left,i-1);
- quick_sort(j+1,right);
-
- }
基本思想:
每一次从待排序的数据元素选出最大(或最小)的一个元素,存放到序列的起始位置,直到全部待排序的数据元素排完。
- #include<stdio.h>
- #define N 10
-
- int main()
- {
- int p[N];
- int i,j,t;
-
- printf("please enter ten numbers:n");
-
- for(i=0;i<N;i++)
- {
- scanf("%d",&p[i]);
- }
- for(i=0;i<N;i++)
- {
- for(j=i+1;j<N;j++)
- {
- if(p[i]>p[j])
- {
- t=p[i];
- p[i]=p[j];
- p[j]=t;
- }
- }
- }
- printf("The correct order is:n");
- for(i=0;i<N;i++)
- {
- printf("%d ",p[i]);
- }
-
- return 0;
- }
基本思想:
将数组的元素分布到多个桶中,然后每个桶单独排序。
- #include<stdio.h>
- #define N 10
- int main()
- {
- int p[21];
- int i,t,j;
-
- for(i=0;i<21;i++)
- {
- p[i]=0;
- }
-
- printf("please enter ten numbers:n");
-
- for(i=0;i<N;i++)
- {
- scanf("%d",&t);
- p[t]++;
- }
-
- printf("The correct order is:n");
-
- for(i=0;i<21;i++)
- {
- for(j=1;j<=p[i];j++)
- {
- printf("%d ",i);
- }
- }
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。