冒泡排序后用二分查找法查找位置

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;                          //用来包含sleep

namespace 冒泡排序
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array=new int[10];
            int exchange;
            for (int i=0;i<array.Length;i++)      //length为10,为什么直接填10不行
            {
            Random ran = new Random();            //默认种子是时间,不休息的话,等于默认种子是一个时间,故而长成一个随机数
            array[i]=ran.Next(0,100);
            Thread.Sleep(30);
            }
            Console.Write("所生成的随机数列为:");
            foreach (int x in array)
                Console.Write(" " + x);
            for (int i=0;i<9;i++)               //相邻数字进行大小排序,极端情况为最大的数在最小的位置,这样相邻位置交换9次可以把它移动到应有的位置
            {
                for (int k = 0; k < 9; k++)
                {
                    if (array[k] >= array[k + 1])
                    {
                        exchange = array[k];
                        array[k] = array[k + 1];
                        array[k + 1] = exchange;
                    }
                }
            }
            Console.WriteLine();
            Console.Write("排序后的数列为:    ");
            foreach (int y in array )
                    Console .Write (" "+y);

            Console.Write("\n请输入索要查询的数字:");
            int num = int.Parse(Console.ReadLine());
            int begin = 0, end = 9,mid;
            bool abc=array.Contains(num);
            if (abc==false)
                Console.WriteLine("数列中不含有此数字");                      //用了一回布尔型,还不太熟练
            else
                while (true)
            {
                mid = (begin + end) / 2;
                if (array[mid] > num)
                    end = mid;
                if (array[mid] < num)
                    begin = mid;
                if (array[mid] == num)
                {
                    Console.WriteLine("您所查找的数字在数列中的索引位置为" + mid);
                    break;
                }
            }
            Console.ReadLine();
        }
    }
}
时间: 2024-10-11 13:25:20

冒泡排序后用二分查找法查找位置的相关文章

利用选择排序排序数组,用二分查找法查找

#include <stdio.h> #include <iostream> using namespace std; int main() { int a[] ={1,8,45,12,75,466,25,65,14,56,53}; int t; int length; length =sizeof(a)/sizeof(a[0]); for(int i=0;i<length;i++) { for(int j=i+1;j<length;j++) { if(a[i]>

输入一组有序数据,使用折半查找法查找一个数据,并输出位置

#include <stdio.h> /** * 使用折半查找,来查找一个数 * * @param arr 数组 * @param len 数组的长度 * @param key 要查找的数 * * @return 要查找的数的位置,如果查找不到返回 -1 */ int searchItem(int arr[], int len, int key) { // 定义变量 int low = 0, high = len - 1, mid; // 循环 while (low <= high) {

小朋友学数据结构(5):顺序查找法

小朋友学数据结构(5):顺序查找法 查找是最常见的数据操作之一,也是数据结构的核心运算之一,其重要性不言而喻. 顺序查找是最简单的查找策略,对于小规模的数据,顺序查找是个不错的选择. (一)基本思想 从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败. 1 从表中的第一个元素开始,依次与关键字比较. 2 若某个元素匹配关键字,则查找成功. 3 若查找到最后一个元素还未匹配关键字,则查找失败. 1.png (二)时间复杂度 顺序查找平均关键字匹配次数为表长的一半,其时间复杂度为O(n).

Java学习 (七)、数组,查找算法,二分查找法,冒泡排序,选择排序,插入排序

一.常用数组查找算法 工作原理:它又称为顺序查找,在一列给定的值中进行搜索,从一端的开始逐一检查每个元素,知道找到所需元素的过程. 例1:查找指定的数在数组中出现的位置,找到返回下标,找不到返回-1 1 import java.util.Scanner; 2 public class LinearSearch{ 3 public static void main(String []argas) 4 { 5 int [] array={10,100,90,65,80,92}; 6 System.o

冒泡排序法与二分查找法

冒泡排序(Bubble Sort) 是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名. 算法原理 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该

二分查找法 冒泡排序法

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好; 其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功; 否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表. 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功. 二分查找

C语言数组之冒泡排序+折半查找法(二分查找)

冒泡排序算法 1 int num[5]; 2 int i; 3 //循环接收用户输入的元素 4 for(i=0;i<5;i++){ 5 printf("请输入第%d个元素\n",i+1); 6 scanf("%d",&num[i]); 7 } 8 for(i=0;i<4;i++){ //外层循环,控制排序的轮数 9 int j; 10 for(j=0;j<4-i;j++){ //内层循环,控制冒牌排序每轮的次数 11 if(num[j]&g

选择、冒泡排序,二分查找法以及一些for循环的灵活运用

import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] array = { 31, 22, 15, 77, 52, 32, 18, 25, 16, 7 }; // 冒泡 --> 两两比较 --> 提取出最大的数 在最后一位 //拿第一位和它后面的一位进行 两两比较 System.out.println(Arrays.toString(array)); fo

数组冒泡排序、选择排序、二分查找法

1 数组高级冒泡排序原理图解[掌握] 画图演示 需求: 数组元素:{24, 69, 80, 57, 13} 请对数组元素进行排序. 冒泡排序 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 2 数组高级冒泡排序代码实现[掌握] 案例演示 数组高级冒泡排序代码 package com.heima.array; public class Demo1_Array { public static void main(String[] args) { int[] arr = {24,