冒泡排序 二分法查找

一、冒泡排序
趟数和次数:
每趟出来一个最小(最大)的数。
每次比较相邻的两个数,按要求交换位置。

 int[] a = new int[8] { 9, 21, 8, 13, 16, 22, 7, 6 };
            Console.WriteLine("************排序之前*************");
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + "\t");
            }
            Console.WriteLine();
            //排序
            for (int i = 1; i<=a.Length-1; i++)   //趟数  n-1
            {
                for (int j = 1;j<=a.Length-i ; j++)  //每趟中比较的次数  n-i
                {
                    if (a[j - 1] > a[j])
                    {
                        int temp = a[j - 1];
                        a[j - 1] = a[j];
                        a[j] = temp;
                    }
                }
            }
            Console.WriteLine();
            Console.WriteLine("************排序之后*************");
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + "\t");
            }
            Console.WriteLine();

二、二分查询
前提:数组必须是有序的。

            int[] a = new int[] { 22, 21, 16, 13, 9, 8, 7, 6 };

            //从键盘接收要查找的数。
            int find = Convert.ToInt32(Console.ReadLine());

            int maxsub, minsub, midsub;
            minsub = 0;
            maxsub = a.Length - 1;

            for (;maxsub >= minsub ; )
            {
                midsub = (maxsub + minsub) / 2; //求中间下标
                if (a[midsub] == find)  //看看找到了没有?
                {
                    Console.WriteLine("恭喜找到了,在第" + midsub + "个位置上");
                    break;
                }
                else //这次没找到
                {
                    if (a[midsub] > find)   //扔掉上半
                    {
                        minsub = midsub + 1;
                    }
                    else    //扔掉下半
                    {
                        maxsub = midsub - 1;
                    }
                }
            }
时间: 2024-11-04 23:24:52

冒泡排序 二分法查找的相关文章

二分法查找和冒泡排序

//二分法查找 public static void main(String[] args) { boolean found = false; Scanner sc = new Scanner(System.in); int zhong = sc.nextInt();//输入要找的数 int [] a = new int []{1,7,11,15,18,21,23,25,31,35};//有序数组 int low=0,high=9,mid=0;//下标 while(low<=high){ mid

顺序表的冒泡排序算法及二分法查找代码实现

本文主要实现了比较经典的冒泡排序算法(对已经有序或者基本有序的顺序表复杂度大大降低),和二分法查找,各位看官看代码吧 //冒泡排序算法及二分法查找 #include "stdio.h" typedef struct { int key; }SSTable_Elem_Type; typedef struct { SSTable_Elem_Type*elem; int length; }SSTable_Typedef; void Bubble_Sort(SSTable_Typedef*ST

数组排序 和 二分法查找

二分法查找 当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于当前位置值,则在数列的前半段中查找:若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止. 假设有一个数组 {5,4,2, 67, 77, 89, 90,4,9,1,12, 23, 34, 45, 56 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -

循环经典--------冒泡排序,查找。

1.冒泡排序 将8个整数进行升序排列 22 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 22 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 22 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 10 10 10 10 11 11 11 22 22 22 22 22 22 2

JavaScript用二分法查找数据等

//二分法查数据 var arr=[41,43,45,53,44,95,23]; var b=44; var min=0; var max=arr.length; for(var i=1;i<arr.length;i++){ //外层循环控制排序的次数 for(var j=0;j<arr.length-i;j++){//内层循环控制循环的个数 if(arr[j]<arr[j+1]){ z=arr[j]; arr[j]=arr[j+1]; arr[j+1]=z; } } } // aler

20160420冒泡排序和查找

2016-04-20 第12天 1:冒泡排序原理 1)比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3)针对所有的元素重复以上的步骤,除了最后一个. 4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 目的:按从小到大排序. 方法:  假设存在数组:9, 10, 5, 8, 7, 4, 3, 1, 6, 2 第一轮比较相邻两个元素,如果左边元素大于右边元素,则

php常见的几种排序以及二分法查找

<?php 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49] 38 65 97 76 13 27 49J=2(38) [38 49] 65 97 76 13 27 49J=3(65) [38 49 65] 97 76 13 27 49J=4(97) [38 49 65 97] 76 13 27 49J=5(76) [38 49 65 76 97] 13 27 49J=6(13) [1

二分法查找(数组元素无序)

问题描述: 一数组,含有一堆无序数据,首先将数据按顺序排列,再用二分法实现某个元素的查找,若找到,返回该元素在数组中的下表,否则,返回不存在提示信息. #include<stdio.h> #include<stdlib.h> int *bubble_sort(int a[],int n)//冒泡排序(将数据升序排列) { int i; int j; int tmp; for(j=0;j<n-1;++j)//n个元素需要排序n-1趟 { for(i=0;i<n-j-1;+

【基础算法】冒泡排序+二分查找法

1.思考题 (1)有12颗球,1颗是9克,其余的都是10克,怎样在天平上称三次找出9克的那颗质量小的球? 答:第一次:把12颗球分成两半,一半6颗,在天平上称,取质量小的一边: 第二次:把6颗球分成两半,一半三颗,也取质量小的一边: 第三次:取三颗球中任一两颗去称,如果质量相等,那么没有称的那一颗就是质量最小的一颗(9克),如果两颗质量不想等,取质量小的一颗也可以取到. (2)有1024个人,有一个人血液有病毒,而999个人没有病毒,化验一个人的血液需要10分钟,怎么用最短的时间找出有血液病毒的