/**
* 冒泡排序法
* 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
*/
private void maopaoSort(){
for(int i = 0;i<a.length;i++){
for(int j = 0;j < a.length - 1 - i;j++){
if(a[j] > a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
/**
* 选择排序
* 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
*/
private void xuanzeSort(){
for(int i = 0;i<a.length;i++){
for(int j = i + 1; j<a.length;j++){
if(a[i] > a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
/**
* 快速排序法
* 冒泡排序的优化,简单来说就是挖坑分治
*/
private void quickSort(){
sort(a, 0, a.length - 1);
}
private void sort(int a[], int low, int hight) {
int i, j, index;
if (low > hight) {
return;
}
i = low;
j = hight;
index = a[i]; // 用子表的第一个记录做基准
while (i < j) { // 从表的两端交替向中间扫描
while (i < j && a[j] >= index){
j--;
}
if (i < j){
a[i++] = a[j];// 用比基准小的记录替换低位记录
}
while (i < j && a[i] < index){
i++;
}
if (i < j){// 用比基准大的记录替换高位记录
a[j--] = a[i];
}
}
a[i] = index;// 将基准数值替换回 a[i]
sort(a, low, i - 1); // 对低子表进行递归排序
sort(a, i + 1, hight); // 对高子表进行递归排序
}
Java算法
最新推荐文章于 2024-04-27 07:48:06 发布