无忧文档

排序算法的Java实现

/**
* 排序介绍
* @author JDM
*
*/
public class Sort {

/**
* 冒泡排序
* 思路:对未排序的各元素从头到尾依次比较相邻的两个元素是否逆序,若逆序就就交换这两个元素
* @param a
*/
public void bubbleSort(int a[]){
for (int i = 0; i < a.leng


th; i++) {
for (int j = i+1; j < a.length; j++) {
if (a[i] > a[j]) {
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
}

/**
* 选择排序
* @param a
*/
public static void selectSort(int a[]){
int lowIndex = 0;
int temp = 0;
for (int i = 0; i < a.length; i++) {
lowIndex = i; //无序区的最小数据数组下标
//找出最小的索引
for (int j = i+1; j < a.length; j++) {
if (a[j] < a[lowIndex]) {
lowIndex = j;
}
}
////如果不是无序区的最小值位置不是默认的第一个数据,则交换
if (lowIndex != i) {
temp = a[i];
a[i] = a[lowIndex];
a[lowIndex] = temp;
}

}
}

/**
* 插入排序
* 基本思路:每拿到一个元素,都将这个元素与所有它之前的元素比较一遍,
* 让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。
* @param a
*/
public void insertSort(int a[]){
int temp;
for (int i = 0; i < a.length; i++) {
//从i=1 开始,因为第一个元素认为是已经排好序的
for (int j = i; (j>0)&&(a[j]<a[j-1]); j--) {
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}

}

/**
* 希尔排序
* @param a
*/
public void shellSort(int a[]){
int j = 0;
int temp = 0;
//分组
for (int increment = a.length/2; increment > 0; increment/=2) {
//每个组内排序
for (int i = increment; i < a.length; i++) {
temp = a[i];
for (j = i;

j >= increment; j-= increment) {
if (temp < a[j-increment]) {
a[j] = a[j-increment];
}else{
break;
}
}
a[j] = temp;
}
}
}

}

相关文档
热门文档
你可能喜欢
  • 直接插入排序算法
  • 数据结构排序算法实验
  • 算法分析
评论