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

java基础 选择排序、冒泡排序、折半查找法

2017-03-06 22:35 239 查看
1、选择排序

选择排序,逐次选择最大的或是最小的元素,放到起始位置或是末尾位置,直到排序完成

package sort;
//选择排序
/**
* 选择排序
* 在未排序的数组中找到最大或最小的,存放在起始位置;
* 再从剩余的未排序元素中寻找最大或最小的,然后放在末尾位置;
* 以此类推,直到所有元素均排序完毕;
* @author 空空
*
*/
public class ChoiceSort {
public static void main(String[] args){
int data[] = { 2, 10, 7, 19, 30, 17, 22, 5, 8, 1 };
int i,j,k,temp = 0;
for(i = 0;i < data.length;i++){
k = i;
for(j = i + 1;j < data.length;j++){
if(data[j] < data[k]){
k = j;
}
if(k != i){
temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
}
for(int num:data){
System.out.print(num+",");
}
}
}
2、冒泡排序
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,根据大小比较相邻的两个元素,如果他们的顺序不符合要求就把他们交换过来,直到目标数组排序结束。

package sort;
//冒泡排序
/**
* 比较目标数据中相邻的两个元素,如果大小位置不符,则交换位置;
* 逐次进行,直到排序完成
* @author 空空
*
*/
public class BubbleSort {
public static void main(String[] args){
int[] data = {2,10,5,3,15,22,17,33,21};
for(int i = 0;i < (data.length-1)/2;i++){
for(int j = 0;j < data.length-1;j++){
if(data[j] > data[j+1]){
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
for(int num:data){
System.out.print(num+",");
}
}
}

3、折半查找法



package sort;
/**
* 必须采用顺序存储结构
* 必须按关键字大小有序排列
* @author 空空
*
*/
public class TestBinarySearch {
public static int binarySearch(int a[],int num){
int last = a.length - 1;
int first = 0;
while (first <= last) {
int middle = (first + last)/2;
if (a[middle] == num) {
return middle;
}
else if (a[middle] > num) {
last = middle - 1;
}
else {
first = middle + 1;
}
}
return -1;
}
/**
* 数组查找
* 确定中间位置
* 查找目标元素,返回相应的下标位置
* @param args
*/
public static void main(String[] args) {
int[] src = {7,14,18,21,23,29,31,35,38,42};
System.out.println(binarySearch(src, 23));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 冒泡排序