java常用排序算法(一)

news/2024/7/9 21:23:34
冒泡排序算法
比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。
相同元素前后顺序并没有改变,所以冒泡排序是一种稳定排序算法

总结:每次判断大的放到最后

代码:

 //冒泡排序
     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);
}

Arrays工具类

二分查找:

                int[] num = { 50, 52, 56, 70, 75, 95, 99, 100 };
int index=Arrays.binarySearch(num, 99);
System.out.println(index);

输出数组:Arrays.toString(数组)
数组排序:Arrays.sort(int[] array)

http://www.niftyadmin.cn/n/3649252.html

相关文章

如何下载Android源码(window和Linux)

文章参照来源&#xff1a;http://source.android.com/source/downloading.html 一、window平台关于在window平台下载Android源码&#xff0c;网上一般使用的是直接用git来下载。比如&#xff1a;http://wenku.baidu.com/view/a4f5f922482fb4daa58d4bb5.htmlhttp://hendyyou.ite…

布局适配的问题解决

问题&#xff1a;布局由于虚拟按键导致导航栏顶上去的解决办法 首先写一个工具类&#xff1a; public class AndroidWorkaround {public static void assistActivity(View content) {new AndroidWorkaround(content);}private View mChildOfContent;private int usableHeightPr…

[ReportService]MS报表服务过期后的办法

嘿嘿&#xff0c;重装SqlServer Report Service即可。以前的那些报表重新发布一遍&#xff0c;虽然有点麻烦&#xff0c;可也只能这样了。嘿嘿&#xff0c;重装SqlServer Report Service即可。以前的那些报表重新发布一遍&#xff0c;虽然有点麻烦&#xff0c;可也只能这样了。…

QA的职责是人还是流程

QA的职责是人还是流程 IsQA About People or Process? 原作者&#xff1a; EdwardJ. Correia 译者&#xff1a;开心果, Jenvee, Jeff, Wally (微博&#xff1a;http://weibo.com/quicktest) 日期&#xff1a;2009-08-20 E测中国翻译团队作品 一旦发布版本的产品出现缺陷&…

Android开发之调用系统隐藏API

Android中有些Api被隐藏了&#xff0c;比如开关机&#xff0c;重启&#xff0c;如果要在应用中调用&#xff0c;要么用反射&#xff0c;要么就是直接在Android源代码下编译。如果用Eclipse用IDE&#xff0c;尽管调用隐藏API的代码能顺利在Android源码下通过编译&#xff0c;但E…

Delphi之东进数字语音卡(SS1)可复用源码

Delphi之东进数字语音卡(SS1)可复用源码作者&#xff1a;成晓旭Blog&#xff1a;http://blog.csdn.net/cxxsoft(声明&#xff1a;欢迎转载&#xff0c;请保证文章的完整性)由于工作原因&#xff0c;本人将不在从事商业应有软件的开发工作&#xff0c;现在开始逐级“解密”自己以…

沉浸式状态栏——状态栏的实现封装类

沉浸式状态栏有两种方式&#xff1a;一&#xff1a;当状态栏下面是一张图片的时候&#xff0c;设置上面状态栏为透明&#xff0c;这样状态栏就会被图片覆盖&#xff08;这里为方便我设置了一个button颜色为#FF4081&#xff09; 首先看下没有设置沉浸式状态栏时的状态栏: 设置状…

得到了国内第一本《And I thought I Knew QTP》

承蒙作者厚爱&#xff0c;得到了一本签名版的书&#xff0c;撒几张照片&#xff1a; 加我微博吧&#xff0c;分享更多测试讯息&#xff1a;http://www.weibo.com/quicktest 作者在米国发行此书的照片&#xff1a;