概述
- 冒泡排序
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
- 简单选择排序
- 每次只选择一个数据放在正确的位置
- 直接插入排序
- 把数组后面那些没排序的元素换到数组前面已经排好序的部分里对应的位置
/**
* 冒泡排序
*/
public void bubbleSort(int[] ints) {
//标记是否已经是有序
boolean flag = true;
//如果已经有序则退出循环
for (int i = 1; i < ints.length - 1 && flag; i++) {
flag = false;
for (int j = ints.length - 1; j >= i; j--) {
if (ints[j] < ints[j - 1]) {
//交换元素
int temp = ints[j];
ints[j] = ints[j - 1];
ints[j - 1] = temp;
//如果发生交换则继续循环
flag = true;
}
}
}
}
/**
* 简单选择排序
* 相对于冒泡排序减少了交换次数
*/
public void selectSort(int[] ints) {
for (int i = 0; i < ints.length; i++) {
//默认当前下标位最小值
int min = i;
for (int j = i + 1; j < ints.length; j++) {
//找出最小值的下标
if (ints[min] > ints[j]) {
min = j;
}
//如果最小值默认最小值则交换
if (min != i) {
int temp = ints[min];
ints[min] = ints[i];
ints[i] = temp;
}
}
}
}
/**
* 直接插入排序
*/
public void insertSort(int[] ints) {
for (int i = 1; i < ints.length; i++) {
//当前值
int temp = ints[i];
//记录需要插入的位置
int position = i;
//对已经排好序的部分进行比较
for (int j = i - 1; j >= 0; j--) {
//如果比当前值大,说明被比较的值需要向后移动一位,并且记住当前的下标
if (temp < ints[j]) {
ints[j + 1] = ints[j];
position--;
} else {
//如果比当前值小说明当前值要比以排序的所有值大
break;
}
}
//把当前值插入到记录的位置中
ints[position] = temp;
}
}
@Test
public void sort() {
Random random = new Random();
int[] ints = new int[10000];
for (int i = 0; i < ints.length; i++) {
ints[i] = random.nextInt();
}
long start = System.currentTimeMillis();
// bubbleSort(ints);
// selectSort(ints);
// insertSort(ints);
// System.out.println(Arrays.toString(ints));
System.out.println(System.currentTimeMillis() - start);
}
最后
以上就是贪玩纸飞机为你收集整理的简单算法java实现的全部内容,希望文章能够帮你解决简单算法java实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复