-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
第四讲 冒泡排序、选择排序、二分查找
一、冒泡排序
1、冒泡排序的原理
冒泡排序的原理就是相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。
2、画图说明
2、程序实现
package cn.itcast.homework;
/*
* 编写数组工具类,完成冒泡排序
* 分析:
* 1.相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
*/
public class BubbleSortTest {
public static void main(String[] args) {
//定义一个数组
int[] arr = {12,33,70,55,44};
bianli(arr);
bubblesort(arr);
bianli(arr);
}
//冒泡排序
public static void bubblesort(int[] arr){
for (int y = 0; y < arr.length-1; y++) {
for (int i = 0; i < arr.length-1-y; i++) {//-y:意思 是第n次比较过后,最后以为是最大的就不用再比较了
if (arr[i]>arr[i+1]) {
int temp = arr[i+1];
arr[i+1]=arr[i];
arr[i]=temp;
}
}
}
}
//遍历
public static void bianli(int[] arr){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-1) {
System.out.println(arr[i]+"]");
}else{
System.out.print(arr[i]+",");
}
}
}
}
结果为:
[12,33,70,55,44]
[12,33,44,55,70]
二、选择排序
1、原理
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。
2、画图说明
3、程序实现
<span style="color:#000000;">package cn.itcast.homework;
/*
* 编写数组工具类,完成选择排序
* 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
*/
public class SalarySortTest {
public static void main(String[] args) {
int[] arr = {55,33,70,12,8};
bianli(arr);
salarysort(arr);
bianli(arr);
}
public static void salarysort(int[] arr){
for (int index = 0; index < arr.length-1; index++) {
for (int i = 1+index; i < arr.length; i++) {
if (arr[i]<arr[index]) {
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
}
public static void bianli(int[] arr){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-1) {
System.out.println(arr[i]+"]");
}else{
System.out.print(arr[i]+",");
}
}
}
}</span>
结果为:
[55,33,70,12,8]
[8,12,33,55,70]
三、二分查找
1、原理
每一次都查中间的那个元素,比较大或者小就能减少一般的元素,注意:该数组元素有序
2、画图说明
3、程序实现
<span style="color:#000000;">package cn.itcast.homework;
/*
* 编写数组工具类,完成二分查找
* 分析:每一次都查中间的那个元素,比较大或者小就能减少一般的元素
* 注意:如果数组无序,就不能使用二分查找。
* 因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引。
*/
public class BinarySortTest {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77,88,99,100,110,120,130};
int s = binarySort(arr,25);
System.out.println("要查找的角标为:"+s);
}
public static int binarySort(int[] arr, int value){
int minindex = 0;
int maxindex = arr.length-1;
while (minindex<=maxindex) {
int midindex = (minindex+maxindex)/2;
if (arr[midindex]==value) {
return midindex;
}else if(arr[midindex]<value){
minindex=midindex+1;
}else if (arr[midindex]>value) {
maxindex=midindex-1;
}
}
return -1;
}
}</span>
结果为:
要查找的角标为:-1
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------