java 折半查找 冒泡排序 选择排序

更多查找可以参考 http://www.cnblogs.com/liuling/p/2013-7-24-01.html 这是别人的资源,感觉写的很全。可以仔细研究一下。

/*
使用折半查找的前提是数据是有序(升序)的。

*/
class HalfSearchDemo
{
	public static void main(String[] args)
	{
		int[] arr={1,2,3,6,2,3,5,1,8,9,3,5,2};
		sop("关键字的位置:"+halfSearch_2(arr,6));
		System.out.println("Hello World!");
	}

	public static int halfSearch_2(int[] arr,int key){
		SearchSort(arr);
		int max=arr.length-1,min=0,mid;
		while(min<=max){//注意是"<="
			mid=(min+max)/2;
			if(key>arr[min])
				min=mid+1;
			else if(key<arr[max])
				max=mid-1;
			else
				return mid;
		}
		return -1;
	}

	public static void PubbleSort(int[] arr)   //冒泡排序,首先确定最后一个位置上的元素
	{
		for(int i=0;i<arr.length-1;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 k=0;k<arr.length;k++)
			sop(arr[k]);
	}

	public static void SearchSort(int[] arr)  //选择排序,首先确定第一个位置上的元素
	{
		for(int i=0;i<arr.length-1;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 k=0;k<arr.length;k++)
			sop(arr[k]);
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

//下面是折半查找的另一种表现形式:

public static int halfSearch(int[] arr,int key){
		SelectSort(arr);
		int max=arr.length-1;
		int min=0;
		int mid=(max+min)/2;
		while(arr[mid]!=key){
			if(key>arr[mid])
				min=mid+1;
		    if(key<arr[mid])
				max=mid-1;
			if(min>max)
				return -1;//找不到目标元素
			mid=(max+min)/2;
		}
		return mid;//跳出循环后,表明已经找到目标元素,此时返回目标元素的index。
	}
时间: 2024-11-10 19:51:15

java 折半查找 冒泡排序 选择排序的相关文章

C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序

以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序,然后是測试的样例.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序

下面列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序,然后是测试的例子.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

经典排序:冒泡排序+选择排序 小结

经典排序:冒泡排序+选择排序 例 FJUTOJ 1842 冒泡排序 原理是取相邻两个数进行大小比较,判断是否交换. 以从小到大排序为例,冒泡排序就像气泡一样,最小的数慢慢浮上来,最大的数慢慢沉下去.那么完整从头到尾做一次之后最后一位就是原序列中最大的数字了.然后只需要对1~(n-1)个数字进行排序,完成后倒数第二个数字也为原序列的1~n-1元素中最大的值.如此重复,进行n-1次一定能完成排序.参考代码: 1 #include <stdio.h> 2 void BubbleSort(int *,

8.8 冒泡排序 选择排序 二分查找 递归使用

冒泡排序: #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100000 #define M 100000 void show_arr(int * a,int n) { int i; for(i = 0; i < n; i++) { printf("%d ",a[i]); } printf("\n"); } void init_arr(in

过三关 Java冒泡排序选择排序插入排序小练习

材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选择用插入排序法,来进行排序. 测试类: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //功能:猴子排序 public class MonkeySelect {

冒泡排序 选择排序 插入排序 java

双向冒泡 1 package com.huang; 2 3 public class _014_bubb_sort { 4 5 int[] b={1,2}; 6 static int a[]={12,4,35,65,43,63,2,6,9,544,43543}; 7 public static void main(String[] args) { 8 display(); 9 10 //冒泡 11 for(int i=0;i<a.length/2;i++) 12 { 13 for(int j=0

简单排序算法 冒泡排序 选择排序 插入排序

冒泡排序: 总体思路:对未排序的各个元素,依次比较两个元素,如果这两个元素为逆序(与想要的顺序相反),则交换这两个元素. 这样可以有两种排序的思路: 思路一: 固定位置排序:比如有一个未排序队列,下标依次为0,1,2,.....N-1, 第一轮排序:首先固定位置0,将下标为0的元素依次和下标为1.下标为2.....下标为N-1的元素相比较,若相比较的两个元素为逆序,则交换这两个元素,这样第一轮排序完之后,位置为0的元素,就是最大的(最小的). 第二轮排序:首先固定位置1,将下标为1的元素依次和下

冒泡排序,选择排序,math,Random,System

//冒泡排序public class MathGroup {public static void main(String[] args) {int[] arr= {13,43,25,36,45};for(int x=0;x<arr.length-1;x++) {for(int y=0;y<arr.length-1-x;y++) {if(arr[y]>arr[y+1]) {int num=arr[y];arr[y]=arr[y+1];arr[y+1]=arr[y];}}}System.ou

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定