数组的排序:

qthqth12 2019-03-25 10:15:43
数组线性查找:又称顺序查找。在一列给定的数值进行搜索, 从一端开始逐步检查每个元素,直到找到所需元素的过程 代码如下: public class Test1 { public static void main(String[] args) { int[] array={1,2,3,6,4,5}; System.out.println("请输入你要查询的数"); Scanner ss= new Scanner(System.in); int input= ss.nextInt(); int index=-1;//因为数组下标是从0开始的,如果下标还是-1说明 //数组没有找到你输入的值 for (int i = 0; i <array.length; i++) { if (array[i]==input){//判断数组中有输入的数据 index=i+1;//i表示数组下标 +1说明是数组的位置 break; } } if (index!=-1){ System.out.println("在数组中找到了你输入的值,在第"+index+"的位置"); }else { System.out.println("数组中没有你要找到值"); } } } 二分法查找:又称折半查找法。将数组中间位置记录的关键字与查找关键字比较 如果两者相等 则查找成功;否则利用中间位置记录将数组分成前后2个子数组, 如果中间位置记录的关键字大于查找关键字,则进一步查找前一个子数组, 否则进一步查找后一个子数组。重复以上过程,直到找到或找不到 代码如下: public class Test2 { public static void main(String[] args) { int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 33, 55, 88 }; int first = 0;//起始数 Scanner scanner = new Scanner(System.in); System.out.println("请输入一个数"); int num = scanner.nextInt(); int last = array.length - 1;//最后一个数 int index = -1; int middle ;//中间数 while (last >= first) { middle = (first + last) / 2; if (array[middle] == num) { index = middle;//如果正好猜到中间数 break; } if (num > array[middle]) { first = middle + 1;//猜的数大于中间数 //把平分数第一个数赋值之前中间数,再次求平均数 } if (num < array[middle]) { last = middle - 1; } } if (index != -1) { System.out.println("您要查的数在" + (index + 1) + "位"); }else{ System.out.println("抱歉没有找到"); } } } 冒泡排序:比较相邻的元素 如果第一个比第二个大 就交换它们俩位置下标 对每一个相邻元素作同样的工作,从开始第一对到结尾的最后一对。 针对除了最后一个元素以外所有的元素重复以上的步骤。直到没有任何一对数组需要比较。 代码如下: public class Test4 { public static void main(String[] args) { int [] array={1,2,3,9,7,6,4,5}; //N个数比较的轮数为N-1 for (int i = 0; i < array.length - 1; i++) { //每一轮比较的次数为N-1-i; for (int j = 0; j < array.length - 1 - i; j++) { //比较相邻的两个数 , 小的靠前 if (array[j]>array[j+1]){ //两个数做交换位置 通过设置临时变量 int temp= array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } //把排好顺序的数组输出一下 for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } } 选择排序法:首先在未排序序列中找到最小元素, 存放到排序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列的末尾。 以此类推 ,直到所有元素均排序完毕 代码如下: public class Test5 { public static void main(String[] args) { int[] array={1,3,5,2,6,7,4,9}; int min=0;//保存最小元素值下标 for (int i = 0; i < array.length - 1; i++) { min=i;//查找最小元素在数组的下标 for (int j = i+1; j < array.length; j++) { if (array[min]>array[j]){ min=j;//保存最小数下标 } } //如果第i个最小数的位置不在i上则进行交换 if (i!=min){ int temp=array[i]; array[i]=array[min]; array[min]=temp; } } for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } } 插入排序: * 它是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描, * 找到相应位置并插入。从后向前扫描过程中,需要反复把排序元素逐步向后挪移, * 为最新元素提供插入空间 代码如下: public class Test6 { public static void main(String[] args) { int[] array= {4,3,6,8,1,7}; for (int i = 0; i < array.length; i++) { int temp=array[i]; //把下标保存下来 int j=i; while (j>0&&temp<array[j-1]){ //上面的数覆盖其下面的数 array[j]=array[j-1]; j--; } array[j]=temp;//插入数据 } for (int i = 0; i <array.length; i++) { System.out.println(array[i]); } } }
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
耿某人啊 2019-04-28
  • 打赏
  • 举报
回复
早起晚睡 2019-03-26
  • 打赏
  • 举报
回复
bcsflilong 2019-03-26
  • 打赏
  • 举报
回复

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧