---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
一类:插入排序
插入排序法:基本思想:输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,
该数组排序完毕。
希尔排序法:
基本思想:属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法(初次取序列的一半为增量,以后每次减半,直到增量为1)
二类:选择排序
选择排序:
基本思想:第1趟简单选择排序是指通过n-1次关键字的比较,从n个记录中选出关键字最小的记录(记录),并和第1个记录进行交换。共需进行n-1趟比较,直到
所有记录排序完成为止。
堆排序:
基本思想:堆排序是一树形选择排序,在排序过程中,将R[1..N]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关
系来选择最小的元素。
三类:交换排序
冒泡排序法:
基本思想:依次比较相邻两个数,将小数放在下面,大数放在上面。,即:首先比较第一个和第二个数,将小数置放下,大数放在上,循环依次,就可以找到最
小值,放于末尾,再次循环,将数列排好。
快速排序法
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别
进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
四类:归并排序
基本思想:1将n个元素分成两个含n/2元素的子序列;2用MS将两个子序列递归排序(最后可以将整个原序列分解成n个子序列);3合并两个已排序好的序列。
五类:基数排序
基本思想:根据数字的性质来逐个根据个位数、十位数、百位数分类求得进行分类。
快速排序是一个效率较高的算法,在此示例一下快速排序的算法。
public class Test01 {
public static void main(String[] args)
{
int[] arr={43,11,28,14,63,18,87,23,73};
quickSort s=new quickSort();
s.arr=arr;
s.Display(); //输出原数组
s.sort(0,s.arr.length-1); //对数组进行排序
s.Display(); //输出排序后的数组
}
}
class quickSort{
int[] arr;
int partition(int sortArray[],int low,int hight)
{
int key = sortArray[low]; //定义关键数据
while(low<hight)
{
while(low<hight && sortArray[hight]>=key)
hight--;
sortArray[low] = sortArray[hight]; //将较小的值放在前端
while(low<hight && sortArray[low]<=key)
low++;
sortArray[hight] = sortArray[low]; //将较大的值放在后端
}
sortArray[low] = key; //将关键数据放在数组中间
return low; //返回中间位置
}
void sort(int low,int hight)
{
if(low<hight)
{
int result = partition(arr,low,hight); //将数组一分为二,并获取数组的中间位置
sort(low,result-1); //对前端进行排序
sort(result+1,hight); //对后端进行排序
}
}
void Display() //输出
{
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------