栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

工作算法合集

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

工作算法合集

目录

第一章:排序算法

 1.直接插入排序

2.折半排序-二分排序


第一章:排序算法

 1.直接插入排序
#include 

void display(int a[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", a[i]);
    }
    printf("n");
}

void InsertSort(int a[], int size) {
    for (int i = 1; i < size; i++) {        // 1第 1 个数肯定是有序的,从第 2 个数开始遍历,依次插入有序序列
        int x = a[i];              	//2做一个临时变量去保存a[i] =x
        int j    = i - 1;                   // 从最后比较大小-前移 
        while (j >= 0 && a[j] > x) { // 越界 +  xx 继续前进 16>7 
            a[j + 1] = a[j];        // 将大于 temp(array[i]) 的数据后移
            j--;                            // 向前比较
        }                                   // 结束循环
        a[j + 1] = x;                // array[i]插入到正确的位置上

        //打印每次排序结果
        display(a, size);
    }
}

int main() {
    int a[] = {15,18,29,12,35,32,27,23,10,20};
    int size    = sizeof(a) / sizeof(int);

    //打印原始数据
    printf("个数%d n", size);
      printf("n");
      
    display(a, size);
    InsertSort(a, size);
    
}

2.折半排序-二分排序
#include

void display(int a[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", a[i]);
    }
    printf("n");
}

void BInsertSort(int a[],int size)
{
	int i,j,low,high,mid,x;
	for(i=1;i=x)
				high=mid-1;//如果大于x值,则查找范围缩小到左子序列
			else
				low=mid+1;//如果小于x值,则查找范围缩小到右子序列
		}
		for(j=i-1;j>=high+1;j--)
			a[j+1]=a[j];//将high之后的数据整体后移
		a[high+1]=x;//将x值插入该位置
		  display(a, size);
	}  
}
int main()
{
	int a[]={15,18,29,12,35,32,27,23,10,20};
    int size    = sizeof(a) / sizeof(int);
    
     printf("个数%d n", size);
      printf("n");
      
    display(a, size);
	BInsertSort(a,size);
	
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号