19排序和查找

排序和查找

排序:暂考虑升序

  • 冒泡排序:外循环定比较次数,内循环依次和后面数对比之后交换位置。
  • 插入排序:第n+1插入前n个,整个前n+1个数有序排列
  • 选择排序:第一个位置从所有的数中选择最小值放入,进行互换,同理第二个位置从剩下的数中选最小互换,依次如此。
  • 快速排序:先找某元素处于第2几位,则数据被该元素分为左右两边;之后再在分的区间内继续操作
  • 归并排序:先两个两个排,后四个四个排,再八个八个排再整体一起排.

排序和查找的关系

  • 排序是查找的前提
  • 排序是重点

快速排序(速度相对快):假定某个元素为第一个元素

# include <stdio.h>
//函数声明
int pos = FindPos(int * a, int low, int high);
void QuickSort(int * a, int low, int high);

int main()
{
    int a[6] = {2, 1, 0, 5, 4, 3};
    int i;
    QuickSort(a, 0, 5);//第二个参数为第一个元素下标,第三个参数为最后一个元素下标
    for(i = 0; i<6; ++i)
        printf("%d", a[i]);
    printf("\n");
}
//排序只能实现不需要返回值
void QuickSort(int * a, int low, int high)
{
    int pos;
    if(low < high)
    {
        pos = FindPos(a, low, high);//寻找某元素位置,该位置左边元素小于该元素,右边大于该元素
        QuickSort(a, low, pos-1);
        QuickSort(a, pos+1, high);    
    }
}
int QuickSort(int * a, int low, int high)
{
    int val = a[low];//假定先找首元素位置
    while(low<high)
    {
        while(low<high && a[high]>=val)
            --high;
        a[low] = a[high];
        while(low<high && a[low]<val)
            ++low;
        a[high] = a[low];      
    }//low往右,high往左,当相等时结束
    a[low] = val;
    return low;//low = high,返回任何一个都可
}

Java中容器和数据结构相关知识

  • Interator接口
  • Map

​ 哈希表

数据结构

  • 数据结构研究数据和数据操作的学问
  • 数据存储分两部分
    1. 个体的储存
    2. 个体关系的存储
    3. 从某个角度而言,数据的存储最核心的就是个体关系的存储
    4. 个体存储可以忽略不计
posted @   夜月明  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示