冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置 大的数字后浮
如 12 8 5 31
第一轮 8 5 12 31
第二轮 5 8 12 31
........
代码如下
package com.zuoyan.sort;
/**
* 冒泡排序
* @author Administrator
*
*/
public class BubbloSortDemo {
public static void main(String[] args) {
int []arr = {10,8,20,3,6,22,16};
for(int i =0 ;i< arr.length;i++)
{
for(int j =0; j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]= temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}
}
2.选择排序
思路就是 将这个数组从头开始遍历
从第一个开始 与他后面的每个数字进行比较,如果遇见比他小的 这个两个数字进行交换位置,
第二个也是,也是从他后面的进行比较,不用比较第一个了,因为第一个已经是整个数组中的最小数字了
.......
代码如下
package com.zuoyan.sort;
/**
* 选择排序
* @author Administrator
*
*/
public class SelectSort {
public static void main(String[] args) {
int [] arr={1,12,11,8,13,89,45,22,61};
for(int i=0 ;i<arr.length;i++)
{
for(int j =i+1;j<arr.length;j++)
{
if(arr[i]>arr[j])
{
int temp =arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}
}
3.二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查找的表为有序表。二分查找的目的是查找出元素的索引,有个前提是数组元素必须是有序
package com.zuoyan.sort;
/**
* 二分查找算法
* @author Administrator
*
*/
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77};
int num = 51;
int index = -1;
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
while(true)
{
if(arr[mid] == num)
{
index = mid;
break;
}
if(arr[mid]<num)
{
min = mid +1;
mid = (min+max)/2;
}
if(arr[mid]>num)
{
max = mid-1;
mid =(max + min)/2;
}
if(min>max)
{
break;
}
}
System.out.println(index);
}
}