排序主要有
插入排序
希尔排序
选择排序
堆排序
冒泡排序
归并排序
快速排序
你可以找一本数据结构看一看。
1、设数组a中存放了n个数据元素,low为数组的低端下标,high为数组的高端下标,从数组a中取a【low】作为标准,调整数组a中的各个元素位置,使排在标准元素前面元素的关键字均小于标准元素的关键字,排在标准元素后面元素关键字均大于或者等于标准元素的关键字。这样一个过程结束后,一方面将标准元素放在未排好序的数组中该标准元素该在的位置,另一方面将数组中的元素以标准元素为中心分成了两个数组,位于标准元素左边子数组中元素的关键字均小于标准元素的关键字,位于标准元素右边子数组中元素的关键字均大于或者等于标准元素关键字。对于这两个子数组中的元素分别在进行方法类同的递归快速排序。递归算法的结束条件是high<=low,即上界小于或者等于下界下标。
举例如下:- class Quick//定义一个排序类
- {
- public static void Sort(int[] a,int low,int high)
- {
- int i = low;
- int j = high;
- int temp=a[low];//取第一个元素为标准数据元素
-
- while(i<j)
- {
- while(i<j&&temp<=a[j])//在数组右端扫描
- j--;
- if(i<j)
- {
- a[i]=a[j];
- i++;
- }
- while(i<j&&a[i]<temp)//在数组左端扫描
- i++;
- if(i<j)
- {
- a[j]=a[i];
- j--;
- }
-
- }
- a[i]=temp;
-
- if(low<i)Sort(a,low,i-1);
- if(i<high)Sort(a,j+1,high);
- }
- }
- public class Test3
- {
- public static void main(String[] arge)
- {
- int i;
- int [] a = {8,5,3,4,7,9,0,1,2,6};//定义一个数组
- for(i=0;i<a.length;i++)
- {
- System.out.printf("%3d",a[i]);//输出数组
-
- }
- System.out.println();
- Quick.Sort(a,0,9);//调用排序类的方法
- for(i=0;i<a.length;i++)
- {
- System.out.printf("%3d",a[i]);//输出排完序的数组
-
- }
- System.out.println();
-
- }
-
- }
复制代码 |