学习笔记:数组四大排序方法
来源:互联网 发布:java 进阶书籍 编辑:程序博客网 时间:2024/05/18 03:42
一、顺序查找法(个人最常用)
import java.util.Scanner;public class main {public static void main(String[] args){Scanner kb=new Scanner(System.in);double[] a = new double[10];int mfind = 50 ;boolean bFind = false ;for (int i=0;i<a.length;i++){a[i] = kb.nextDouble();}for (double x:a){System.out.print(x+" ");}System.out.println();for (double x:a){if (mfind == x){bFind = true ;break;}}if (bFind){System.out.println("找到");}else{System.out.println("没找到");}}}
【程序说明】
对于元素没有排序的数据,常利用顺序查找方法,即逐个将数组元素与待查找元素比较,如果匹配,则查找到指定元素,如果遍历整个数组仍未查到,则表明数组中没有待查找的元
素。
二、冒泡排序法
public class main {public static void main(String[] args) {int[] a = new int[10];boolean bFind = false ;Random r = new Random();for (int i = 0 ;i<=a.length-1;i++){a[i]= r.nextInt(90)+10;System.out.print(a[i]+ " ");}System.out.println();for(int j=1;j<a.length;j++){for(int i=0;i<a.length-j;i++){if (a[i] > a[i+1]){//两两交换int temp=a[i];a[i]=a[i+1];a[i+1]=temp;}}}System.out.println("排序后的数据为: ");for (int x:a)System.out.print(x+" ");}}
【程序说明】
从数组的第一个元素开始,数组前后两个元素两两比较,如果两个元素顺序不满足要求,
相互交换位置。这样,经过第一轮比较,则数组中最大的元素到达数组末尾,经过第二轮比
较,数组中次大的元素到达数组倒数第二的位置。重复以上步骤,则数组中所有元素即完成
了从小到大的排序。由于该排序类似于气泡小的上升,大的沉底,故名冒泡法。
三、二分查找法
“`
public class main {
public static void main(String[] args) {
int a[]={9,13,25,34,38,62,69,78,86,97};//静态初始化
int iZSearchnum=86; //index 为查找标志位,初始值置为-1
//left,mid,right 分别为数组或子段的最左、中间、最右元素的下标
int index=-1,left,mid,right;
left=0;
right=a.length-1;
while(left<=right){
mid=(left+right)/2;
if(a[mid]== searchnum){
index=mid; //如果中间元素和待查找元素相同,则找到
break;
}else if(a[mid]< searchnum){
left=mid+1; //查找后半段
}else{
right=mid-1; //查找前半段
}
}
if(index==-1)
System.out.println(searchnum +”在数组中不存在!”);
else
System.out.println(searchnum +”在数组中位置是” + index);
}
}
【程序说明】对于元素已排序的数组,常利用二分法查找。假设数组元素已按升序排列,二分查找法的核心思想是:首先,将数组中间位置元素与待查找数据比较,如果两者相等,则查找成功;否则利用中间位置元素将数组分成前、后两个子段,如果中间位置元素大于查找数据,则进一步查找前半段,否则进一步查找后半段。重复以上过程,直到找到和查找数据匹配的元素,则查找成功,或直到子段不存在为止,则查找不成功。 ***四、选择排序法*** ```public class main {public static void main(String[] args) {int[] a = new int[10];int minIndex ;Random r = new Random();for (int i = 0 ;i<=a.length-1;i++){a[i]= r.nextInt(90)+10;System.out.print(a[i]+ " ");}System.out.println();for (int i = 0; i < a.length-1; i++){ //第 i 趟循环minIndex = i; //假设第 i 个元素即是剩下数据的最小值for (int j = i + 1; j < a.length; j++)if (a[j] < a[minIndex]){minIndex = j; //记下该趟循环中最小数据的下标位置}if (minIndex != i){int tmp = a[i];a[i] = a[minIndex];a[minIndex] = tmp;}}System.out.println("排序后的数据为: ");for (int x:a){System.out.print(x+" "); } }}
【程序说明】
选择排序的思想是:每一趟从待排序的数据元素中选出最小的一个元素,将此元素与数据中第一个元素进行交换。然后,从剩下的待排序数据(第二个元素开始至结尾)中,选出最小的一个元素,将此元素与数据中第二个进行交换。依次类推,直到全部待排序的数据元
素排完。
注意: JAVA没法定义不定长的数组,要么声明为NULL,要么指定其长度,如果碰到这种情况可以用集合ArrayList来解决这个问题,或者,可以先遍历原数组,得到0的个数后,再定义新数组。
- 学习笔记:数组四大排序方法
- 数组排序,查找方法。(学习笔记)
- java数组排序方法笔记
- 编程四大排序方法
- php学习笔记--数组排序
- 数组排序(学习笔记)
- Flex学习笔记:数组元素随机排序
- Flex学习笔记:数组元素随机排序
- python学习笔记:二维数组排序问题
- PHP学习笔记【12】--PHP数组排序
- Java学习笔记之数组排序算法
- java学习笔记之数组排序
- Scala学习笔记(六)----数组,循环,排序
- java学习笔记之数组排序
- 【python学习笔记】17:numpy数组排序
- JavaScript学习笔记:数组随机排序
- Android学习笔记--四大组件
- Java 数组排序(冒泡和选择排序) 学习笔记
- 百度地图动态加载数据库中的信息
- 一个经典例子让你彻彻底底理解Java回调机制
- Spring 在使用MVC时的两个context
- Nginx服务器安装及配置文件详解
- 线性表和顺序表区别
- 学习笔记:数组四大排序方法
- Linux常用命令总结
- cdq分治和整体二分
- ajax 流程
- Hihocoder #1043 : 完全背包
- bzoj1305: [CQOI2009]dance跳舞
- 关于导入Extjs项目Eclipse内存溢出
- Hi3516A项目-烧写文件系统到开发板Flash
- 用于数组的new和delete