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

来源:互联网 发布:多线程socket编程java 编辑:程序博客网 时间:2024/06/05 09:41

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));       }} 


0 0
原创粉丝点击