概述
*Java常用排序算法(从小到大)
(1)##冒泡排序##
特点:效率低,实现简单。
思想:将序列中所有元素两两比较,将最大的放在最后面。将剩余序列中所有元素两两比较,将最大的放在最后面。重复第二步,直到只剩下一个数。
32 43 23 13 5
32 43 23 13 5
32 23 43 13 5
32 23 13 43 5
32 23 13 5 43
23 32 13 5 43
23 13 32 5 43
23 13 5 32 43
13 23 5 32 43
13 5 23 32 43
5 13 23 32 43
public static void bubbleSort(int []arr) {
int[] arr = {12,23,34,56,56,56,78};
for(int i =0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-i-1;j++ ) {//-1为了防止溢出
if(arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
(2)##选择排序##
特点:效率低,容易实现。
思想:它的工作原理是每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
32 43 23 13 5
5 32 43 23 13
5 13 32 43 23
5 13 32 23 43
public static void selectSort(int[]a){
int minIndex=0;
int temp=0;
if((anull)||(a.length0))
return;
for(int i=0;i<a.length;i++)
{
minIndex=i;//无序区的最小数据数组下标
for(int j=i+1;j<a.length;j++)
{
//在无序区中找到最小数据并保存其数组下标
if(a[j]<a[minIndex])
{
minIndex=j;
}
}
//将最小元素放到本次循环的前端
temp=a[i];
a[i]=a[minIndex];
a[minIndex]=temp;
}
}
(3)##插入排序##
特点:效率低,容易实现。
思想:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法
32 43 23 13 5
34 43
23 34 43
13 23 34 43
5 13 23 34 43
public void zjinsert (Redtype r[],int n)
{
int I,j;
Redtype temp;
for (i=1;i<n;i++)
{
temp = r[i];
j=i-1;
while (j>-1 &&temp.key<r[j].key)
{
r[j+1]=r[j];
j–;
}
r[j+1]=temp;
}
}
(4)##快速排序##
特点:高效,时间复杂度为nlogn。
思绪:选择第一个数为p,小于p的数放在左边,大于p的数放在右边。递归的将p左边和右边的数都按照第一步进行,直到不能递归。
32 43 23 13 5
23 13 5 32 43
13 5 23 32 43
5 13 23 32 43
public void quickSort(int array[], int low, int high) {// 传入low=0,high=array.length-1;
int pivot, p_pos, i, t;// pivot->位索引;p_pos->轴值。
if (low < high) {
p_pos = low;
pivot = array[p_pos];
for (i = low + 1; i <= high; i++)
if (array[i] > pivot) {
p_pos++;
t = array[p_pos];
array[p_pos] = array[i];
array[i] = t;
}
t = array[low];
array[low] = array[p_pos];
array[p_pos] = t;
// 分而治之
quickSort(array, low, p_pos - 1);// 排序左半部分
quickSort(array, p_pos + 1, high);// 排序右半部分
}
最后
以上就是包容向日葵为你收集整理的*Java常用排序算法(从小到大)的全部内容,希望文章能够帮你解决*Java常用排序算法(从小到大)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复