概述
选择排序
在数组中循环找出当前元素之后范围内最小&大的元素
public static int[] selectionSort(int[] a){
for (int i = 0; i < a.length; i++) {
int min=i;
//选出当前循环内最小数字的索引
for (int k = 1+i; k < a.length; k++) {
if (a[k]<a[min]){
min=k;
}
}
//当前数字索引不等于最小索引时 两数字交换位置
if (i!=min){
int tem;
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
}
return a;
}
冒泡排序
在数组内循环当前元素后的范围内的元素,一次比较相邻两个元素的大小,按照指定顺序将最大&小的元素置换到当前元素的位置
public static int[] bubbleSort(int[] a){
//循环队列长度的次数,从而选出每一种当前元素后的范围内的最大&小的元素
for (int k = 0; k < a.length; k++) {
//将当前元素后范围内的元素依次进行比较选出最大&小的元素并置换为当前元素位的索引
for (int i = k; i < a.length-1; i++) {
if (a[k]>a[k+1]){
int tem;
tem=a[k];
a[k]=a[k+1];
a[k+1]=tem;
}
}
}
return a;
}
分类排序
将数组按指定的数组元素的值的大小进行分类,比该元素大的在一边,小的在另一边,进而继续对分出来的两边的队列进行递归,最终实现数组的有序排序
//l与r分别表示需要分类的数组的左侧位置&右侧位置(初始时为数组的起点0 &终点索引 a.length)
public static int[] sortInner(int[] a,int l,int r){
//将左侧索引&右侧索引 赋值给 low&high hole为数组的一个中间元素(可以为一个l-r内元素的随机值对应的数组位置的值)
int high=r,low=l,hole=a[low];
//只有左侧索引<右侧索引时 才会进行分类排序
if (l<r){
//循环至high==low
while (high>low){
//在右侧开始往左找一个比中间值heole小的元素赋值给左侧low位置的值 同时low的值++
while (a[high]>hole){
high--;
}
if (high>low){
a[low]=a[high];
low++;
}
//在左侧找一个比中间值大的值赋值给high 同时high--
while (a[low]<hole){
low++;
}
if (high>low) {
a[high] = a[low];
high--;
}
}
//当high==low时将 中间值赋值给low(high)位置
a[low]=hole;
//分类后以得到的low中间值的索引为界限 得到左右两边两个队列 递归
//即把一个队列划分为无限个中间值左右两边对立的队列 一定次数后 即可完成整体队列的有序排序
sortInner(a,l,low-1);
sortInner(a,low+1,r);
}
return a;
}
最后
以上就是爱听歌砖头为你收集整理的Java三种简单算法的全部内容,希望文章能够帮你解决Java三种简单算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复