一.初级排序算法
初级排序算法包括:
1.选择排序
2.插入排序
3.希尔排序
--------------------------------------
1.选择排序-选择排序是排序算法中最为简单的一种
[算法描述]
首先在数组中找到最小的元素,将其与数组第一个元素交换位置,再在剩余的元素中遍历,查找到最小的元素,将其与数组的第二个元素交换位置,如此往复,直到将整个数组排序;
[复杂度(时间)]
选择排序用在查找最小元素上的复杂度为n!,最坏的情况是,每次都需要交换,所以用在交换元素上的复杂度为n,最好的情况下,交换复杂度为0,故选择算法的总时间复杂度为:O(n!) + O(n) = O(n!)
[代码-Java]
private static int[] arr_Sort = {51,3,9,12,26,2,89, 11,22,1, 40,33 };
public static void main(String[] args)
{ // 程序入口
arr_Sort = sort_Choose(arr_Sort);// 选择排序
printArr(arr_Sort); // 打印数组
}
/**
* @param 打印数组
*/
private static void printArr(int[] arr)
{
for (int i =0;i < arr.length ; i++)
{
System.out.print(arr[i] +",");
}
}
/**
* @param arr_temp
* @return 选择排序算法入口
*/
private static int[] sort_Choose(int[] arr_temp)
{
for (int i =0;i < arr_temp.length;i++)
{
int min_Index = findMinIndex(arr_temp,i); // 找到当前最小的元素,获得他的下标
int temp = arr_temp[i];
arr_temp[i] = arr_temp[min_Index];
arr_temp[min_Index] = temp;
}
return arr_temp;
}
/**
* @param arr_temp
* 传入数组
* @param start
* 开始比较的数组元素的下标
* @return 返回数组arr_temp中,下标从start开始的
*/
private static int findMinIndex(int[] arr_temp,int start)
{
int min_index = start;
int count = arr_temp.length;
for (int i = start;i <count; i++)
{
if (arr_temp[i] < arr_temp[min_index])
{
min_index =i;
}
}
return min_index;
}
待续.....