您的位置:首页 > 编程语言 > Java开发

java中选择排序,冒泡排序和二分法查找学习记录

2016-07-22 23:30 555 查看
就直接上代码了,要多思考才能搞得清楚,最近因为工作的事情耽误了好了,不能放弃啊!

选择排序,冒泡排序和二分法查找数据

/**
* main 函数
*
* @param args
*/
public static void main(String[] args) {
int[] m = new int[] { 2, 5, 1, 4, 6, 8, 7, 9, 8 };

System.out.print("选择排序的结果是:");
XuanzePaixu(m);
for (int s : m) {
System.out.print(s + " ");
}
System.out.println();

System.out.print("冒泡排序的结果是:");
MaoPaoPaixu(m);
for (int s : m) {
System.out.print(s + " ");
}

System.out.println();
System.out.print("二分查找的结果是:");
System.out.println();
int[] n = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
System.out.println("66下标是" + SecondChaZhao(n, 66));
System.out.println("101下标是" + SecondChaZhao(n, 101));
}

/**
* 选择排序:依次固定每个下标,让每个固定下标中的数和后面所有的数据进行比较
*
* @param m
*            需要排序的数据,按大到小排序
*/
public static void XuanzePaixu(int[] m) {
int n;
for (int i = 0; i < m.length - 1; i++) {
for (int j = i + 1; j < m.length; j++) {
if (m[j] > m[i]) {
n = m[j];
m[j] = m[i];
m[i] = n;
}
}
}
}

/**
* 冒泡排序:下标相邻的两个数进行排序
*
* @param m
*            需要排序的数据,按由小到大排序
*
*/
public static void MaoPaoPaixu(int[] m) {
int n;
for (int i = 0; i < m.length - 1; i++) {
for (int j = 0; j < m.length - 1 - i; j++) {
if (m[j] > m[j + 1]) {
n = m[j];
m[j] = m[j + 1];
m[j + 1] = n;
}
}
}
}

/**
* 二分法排序,前提:被查找的数组是有序排列的,没有该数,默认返回-1
*
* @param m
*            被查找的数组数据
* @param key
*            需要查找的数据
*
*/
public static int SecondChaZhao(int[] n, int key) {
int min = 0, max = n.length - 1, mid;
while (min <= max) {
mid = (min + max) >> 1;
if (key > n[mid])
min = mid + 1;
else if (key < n[mid])
max = mid - 1;
else
return mid;
}
return -1;
}


输出的结果为:

选择排序的结果是:9 8 8 7 6 5 4 2 1

冒泡排序的结果是:1 2 4 5 6 7 8 8 9

二分查找的结果是:

66下标是5

101下标是-1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 冒泡排序