简单排序算法共三种,分别是冒泡排序、选择排序、插入排序,这三种排序算法的算法复杂度均为,这三种排序算法虽然简单,但却是使用频率比较高的;
1.冒泡排序的实现原理:
冒泡排序的原理就是按照顺序相邻的比较两个元素,如果前者大于后者,则交换位置,如下图:
观察可知,最大元素9已经被移动到最后的位置,同理可以完成排序。
2.选择排序的实现原理:
选择排序的原理就是每次选择一个当前元素,然后向后查找最小的元素,如果最小元素小于当前元素再将最小的元素与当前元素交换,如下图:
3.插入排序的实现原理 :
插入排序的原理是每次选择一个当前元素(以第二个元素开始),依次与前面的元素比较,如果小于前面的元素则继续比较,直到找到比自己大的元素,然后插入到该元素的位置,比较过的元素都往后移一位,如下图:
源程序如下:
// 冒泡排序
public static int[] BubbleSort(int[] arr)
{
for (int i = 0; i < arr.length; i++)
for (int j = 0; j < arr.length - i - 1; j++)
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
return arr;
}
// 选择排序
public static int[] SelectSort(int[] arr)
{
for (int i = 0; i < arr.length - 1; i++)
{
int k = i;
for (int j = i; j < arr.length; j++)
if (arr[j] < arr[k])
k = j;
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
return arr;
}
// 插入排序
public static int[] InsertSort(int[] arr)
{
int temp;
int j;
for (int i = 1; i < arr.length; i++)
{
temp = arr[i];
j = i - 1;
while (j >= 0 && temp < arr[j])
{
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
return arr;
}