Java常用排序算法,包括交换排序、选择排序、插入排序和合并排序。其中交换排序主要包括冒泡排序和快速排序法;选择排序主要包括选择排序法和堆排序法;插入排序主要包含插入排序法和Shell排序法。以上几种基本排序法直接对计算机内存中的数据进行排序。
冒泡排序算法通过多次比较和交换实现排序,其排序流程如下:
(1)对数组中的各数据,依次比较相邻两元素的大小。
(2)如果前面的数据大于后面的数据,就交换两个数据。经过第一轮多次的比较厚,便可把最小的数据排好。
(3)再用同样的方法把剩下的数据逐个进行比较,最后便可按照从小到大的顺序排好数组各数据的顺序。
实现如下:
void bubbleSort(int[]a){
int temp;
for(int i=1;i<a.length;i++){
for(j=0;j<a.length-i;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
//打印数组
for(int k=0;i<a.length;k++){
System.out.print(""+a[k]);
}
}
选择排序法思路比较直观,在每一步中选取最小值重新排列,从而达到排序的目的。主要是通过选择和交换来实现排序,其流程如下:
(1)首先从原始数组中选择最小的1个数据,将其和位于第一个位置的数据交换。
(2)接着从剩下的n-1个数据中选择次小的一个数据,将其和第二个位置数据交换。
(3)然后,这样不断重复,直到最后两个数据交换,至此完成了数据从小到大的交换。
void selectSort(int[]a){
int index;
int temp;
for(int i; i<a.length-1;i++){
index=i;
for(int j=i+1;j<a.length;j++){
if(a[j]<a[index]){
index=j;
}
}
//交换两个数
if(index!=i){
temp=a[i];
a[i]=a[index];
a[index]=temp;
}
}
//打印数组
for(int k=0;i<a.length;k++){
System.out.print(""+a[k]);
}
}