java常用排序算法(一)
来源:互联网 发布:获取php版本号 编辑:程序博客网 时间:2024/06/06 03:15
比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。
相同元素前后顺序并没有改变,所以冒泡排序是一种稳定排序算法
总结:每次判断大的放到最后
代码:
//冒泡排序
int num[]={36,4,54,98,86,65};
//第一次循环5次,第二次循环4次
for(int i=0;i<num.length-1;i++){//循环的次数
for(int j=0;j<num.length-1-i;j++){//j<5
if(num[j]>num[j+1]){
num[j]=num[j]+num[j+1];
num[j+1]=num[j]-num[j+1];
num[j]=num[j]-num[j+1];
}
}
}
for(int i=0;i<num.length;i++){
System.out.println(num[i]);
}
}
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好的数列的最后,知道全部待排序数据元素排完
选择排序是不稳定的排序
总结:首先选择最小的放到首或者尾
代码:
// 选择排序
int num[] = { 36, 4, 54, 98, 86, 65 };
for (int i = 0; i < num.length - 1; i++) {// 循环次数
int minnum = i;
for (int j = i + 1; j < num.length; j++) {
if (num[minnum] > num[j]) {
minnum = j;
}
}
if (minnum != i) {
num[minnum] = num[minnum] + num[i];
num[i] = num[minnum] - num[i];
num[minnum]=num[minnum]-num[i];
}
}
for(int n:num){
System.out.println(n);
}
}
/**
* 第一次 4 36 54 98 86 65
* 第二次 4 36 54 98 86 65
* 第三次 4 36 54 98 86 65
* 第四次 4 36 54 65 98 86
* 第五次 4 36 54 65 96 98
*/
从后向前找到合适的位置后插入
基本思想:每步将一个待排序的记录,将其顺序码大小插入到前面已经排序的子序列的合适位置(从后向前找到合适的位置后),直到全部插入排序完为止
二分查找算法
前提是已经排好序的数组中,通过将待查找的元素与中间索引值对应的元素进行比较,若大于中间索引值对应的元素,去右半部分查找,否则,去左半部分查找。依此类推。直到找到为止,找不到返回一个负数
代码:
// 直接插入排序算法
int num[] = { 36, 4, 54, 98, 86, 65 };
for (int i = 1; i < num.length; i++) {// 循环次数
int temp = num[i];//4 54
int j = 0;
for (j = i - 1; j >= 0; j--) {// 从后往前插入
if (temp < num[j]) {//4<36 54<36
num[j + 1] = num[j];
// 第一轮 36 36
} else {
break;
}
}
//结束后j=-1
if (temp != num[j+1]) {
num[j + 1] = temp;//4,36
}
}
for(int n:num){
System.out.println(n);
}
二分查找:
int[] num = { 50, 52, 56, 70, 75, 95, 99, 100 };
int index=Arrays.binarySearch(num, 99);
System.out.println(index);
数组排序:Arrays.sort(int[] array)
- java常用排序算法(一)
- Java常用排序算法(一):插入排序
- 常用排序算法:一
- java常用排序算法
- Java 常用排序算法
- java常用排序算法
- java常用排序算法
- java 常用排序算法
- 常用Java排序算法
- Java常用排序算法
- Java常用排序算法
- Java常用排序算法
- Java 常用排序算法
- java常用排序算法
- java常用排序算法
- java 常用排序算法
- java常用排序算法
- Java常用排序算法
- 机器学习算法与Python实践(1)
- ModelAndView 详解
- JAVA IO中的设计模式
- GreenDao的使用
- 用Construct2制作一个小游戏
- java常用排序算法(一)
- 每日一练-20171114
- java读取文件:二进制文件
- 深入学习javascript
- Android开发常用框架汇总
- 分页查询
- redis-cli 批量删除写法
- cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration... 博客分类: FLEX CC++C#Fl
- Qt实例-UCF数据标注3之程序发布