折半查找_快速排序

折半查找链接:https://www.baidu.com/link?url=yNyTQeYRL5xwA0aA9W8iAUVeroe87jU8j1v5qTrvYJ8uPCU8O-Pgw9oHg-TzHZwc3Hh3Lly8fkEw4fGaiUjKXa-n4rTu9eVQY0mdn-s_ttwHYINPLm7irBP5ivR4JrDrJUVm3KvFkgrlf8D-id7e2ebRpTZmJdaPfOeytTEVd8yWZUtGOwnNOtPnzxIwuQmnw68xdJ6dnH-pi2c7CEEiIq&wd=&eqid=e9e6d3a700016a7b000000065baa4f2b

快速排序链接:https://www.baidu.com/link?url=aBlnbNlAyrTNyWuH3GPZxBL06azwcR6zaw6WfinkweUldAXLYHrSUP4WqbhrmkO3sAM1BdIiIQ3rxyHlkmtafrOgi7yXnqvz0VJaGRp8r17NmC_0l-NrzYdGsA7o9xQ0pVma_KakZOyqxVn8i5GaU03xodWH3yyICcjEQ9z0csj_jdLZQpveRFZljyXmMf5hfZjdpqkeHS1kNl0ngATXAI9da95juDoUl1fdN6sIFWa&wd=&eqid=d76fab2200014df1000000065baa4fbb

 1 package Mypackage;
 2
 3 import java.util.*;
 4
 5 public class 折半查找_快速排序 {
 6     //快速排序
 7     static int a[]=new int[100];
 8     static int n=0;
 9     static int num=0;
10
11     static void quicksort(int left,int right)
12     {
13         int temp=0;
14         int i=0;
15         int j=0;
16         int t=0;
17         if(left>right)
18             return;
19         temp=a[left];
20         i=left;
21         j=right;
22         while(i!=j)
23         {
24             while(i<j && a[j]>=temp)
25                 j--;
26             while(i<j && a[i]<=temp)
27                 i++;
28             //两个数的交换
29             if(i<j)
30             {
31                t=a[j];
32                a[j]=a[i];
33                a[i]=t;
34
35             }
36         }
37         //基准数归位
38         a[left]=a[i];
39         a[i]=temp;
40
41         quicksort(left,i-1);
42         quicksort(i+1,right);
43
44         return;
45     }
46
47     //折半查找
48     static int BinarySearch(int start, int end,int num)
49     {
50         int mid=0;
51         while(start<=end)
52         {
53           mid=(start+end)/2;
54           if(num==a[mid]) {
55               return mid;//返回到下标
56           }
57           else if(num>a[mid])
58           {
59             start=mid+1;
60           }
61           else {
62               end=mid-1;
63           }
64         }
65
66         return -1;
67     }
68     public static void main(String[] args) {
69         int start=1;
70         int end=0;
71         int i=0;
72         Scanner reader=new Scanner(System.in);
73         System.out.print("输入数组的长度为:");
74           n=reader.nextInt();
75           end=n;
76           for(i=1;i<=n;i++)
77           {
78               a[i]=reader.nextInt();
79           }
80
81            quicksort(1,n);
82         System.out.println("排序后的数组为:");
83          for(i=1;i<=n;i++)
84          {
85              System.out.print(+a[i]+" ");
86          }
87          System.out.println("\n");
88          System.out.println("请你输入你查找的值:");
89           num=reader.nextInt();
90           int value=BinarySearch(start,end,num);
91           if(value!=-1)
92               System.out.println("其索引值:"+value);
93           else
94               System.out.println("the value not exist");
95     }
96 }

原文地址:https://www.cnblogs.com/majiasheng/p/9704191.html

时间: 2024-10-09 07:28:04

折半查找_快速排序的相关文章

快速排序和折半查找

package BinarySerach; import java.util.Scanner; public class BinarySerch { /** *折半查找和快速排序 */ static final int N = 15; static void quickSort(int [] array,int left,int right){ int f,t; int ltemp =left; int rtemp = right; //确定分界值 f = array[(left+right)/

快速排序及折半查找

数据结构与算法---快速排序及折半查找: 1)编程实现数据序列的输入2)实现快速排序算法,并对输入的序列排序后输出: 3)实现折半查找算法,并在步骤(2)排序后的序列上,进行任意地查找,并输出查询结果.(查找成功/不成功:等于关键值的元素个数=1或>1) 1 #include <stdio.h> 2 #define N 100 3 4 //快速排序算法并输出 5 void Quick_Partition(double *r, int i, int j) 6 { 7 double x =

查找之二折半查找(二分法查找)和插值查找

一.折半查找的前提是线性表中的记录必须好似关键码有序,线性表必须是顺序存储的. 二.折半查找 1 public class Binary_SearchDemo01 { 2 static int[] num = {0,1,3,5}; 3 public static void main(String[] args) { 4 int key = 3; 5 int x = Sequential_Search(key); 6 System.out.println(num[x]); 7 } 8 privat

查找之折半查找

1 #include<stdio.h> 2 #define N 10 3 4 void QuickSort(int a[],int left, int right); 5 int BinSearch(int a[], int low, int high, int key); 6 int main() 7 { 8 int a[N] = {2,8,4,9,7,6,5,3,1,0}; 9 int j = 0, i; 10 QuickSort(a, 0, sizeof(a)/sizeof(a[0])-

选择排序和冒泡排序以及折半查找

1.选择排序 2.冒泡排序 3.折半查找 方式一:开发使用的方法 方式二:普通的折半

【分治】折半查找法

问题 K: [分治]折半查找法 时间限制: 1 Sec  内存限制: 128 MB提交: 17  解决: 9[提交][状态][讨论版] 题目描述 大魔导师培根曾经说过:“读书使人明智,读诗使人聪慧,演算使人精密,哲理使人深刻,伦理学使人有修养,逻辑修辞使人善辩.”由此可见书籍的重要性是不言而喻的.而与书籍天天打交道的图书管理员,更是夺天地之造化,吸日月之精华的“神之职业”.据史料记载,魔法世界从古至今诞生的众多不平凡的人物中,有不少人都曾经做过“图书管理员”,如道家学派创始人老子,威软公司创始人

12月28 数组的几种应用(冒泡、折半查找)

*************数组的应用************* 一.冒泡排序(升序.降序) 1.双层循环(循环套循环) (1).冒泡排序是用双层循环解决.外层循环的是趟数,里层循环的是次数.(2).趟数=n-1:次数=n-趟数.(3).里层循环使用if比较相临的两个数的大小,进行数值交换. 二.折半查找(也叫二分法) 1.前提:数组必须有序. 2.主要就是3个未知量. 顶部:topsub 底部:bottomsub 中间:midsub =(topsub+bottomsub)/2 将数组一分为二,然

java之折半查找

//功能:二分查找import java.util.*; public class Demo1 {    public static void main(String[] args) {      int arr[]={2,5,7,12,25};//定义arr数组并赋值      System.out.print("请输入你需要查找的数:");      Scanner sr=new Scanner(System.in);      int a=sr.nextInt();      B

二分查找/折半查找

二分查找又叫折半查找. 前提:数组是有序的. 思想:1.每次都拿中间的数的key进行比较,如果相等,找到: 2.如果key > 中间数,说明key在中间数的右边,接着拿右边的中间数和key比较: 3.如果key < 中间数,说明key在中间数的左边,接着拿左边的中间数和key比较: 4.循环上述过程: 啥也不说了,上代码: 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5 // 定义数组 6