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

C语言-所有排序实现

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

C语言-所有排序实现

头文件Insert.h

#include
void Swap(int *a, int *b);
void StraightInsert(int *a, int n);
void HalfSearch(int *L, int n);
void BubbleSort(int *L, int n);
void SelectSort(int L[], int n);

测试文件Main.c

#include
#include"Insert.h"
int main() {
	int  L[8] = { 49,38,65,97,76,13,27,49 };//0为辅助空间初始化
	int n = 8;
	//StraightInsert(L, 8);//直接插入排序
	//HalfSearch(L, n);//折半查找
	BubbleSort(L, n);//冒泡排序
	//输出结果
	for (int i = 0; i < n; ++i) {
		printf("%d-->", L[i]);
	}
	printf("n");
}


	

函数实现Insert.c

#include"Insert.h"
#include

void Swap(int *a, int *b) {
	int temp = *a;
	*a = *b;
	*b = temp;
}

void StraightInsert(int *L, int n) {
	for (int i = 1; i < n; i++) {
		if (L[i] < L[i - 1])//比较的是它以及它的邻居
		{
			Swap(&L[i], &L[i - 1]);//注意:这里传引用(因为是数组中的某一个值进行交换)
			for (int j = i - 1; j > 0 && L[j] < L[j - 1]; j--) //比较的是它和它之前的
				Swap(&L[j], &L[j - 1]);
		}//if
	}//for
}

void HalfSearch(int L[], int n) {
		int i, j, low, high, mid, key;
		for (i = 1; i < n; i++)
		{
			key = L[i];//把L[i]的值保存在key变量中
			low = 0;
			high = i - 1;
			while (low <= high)//折半查找
			{
				mid = (low + high) / 2;
				if (L[mid] >= key)
					high = mid - 1;//如果大于key值,则查找范围缩小到左子序列
				else
					low = mid + 1;//如果小于key值,则查找范围缩小到右子序列
			}
			for (j = i - 1; j >= high + 1; j--)
				L[j + 1] = L[j];//将high之后的数据整体后移
			L[high + 1] = key;//将key值插入该位置
		}
	}

void BubbleSort(int L[], int n) {
	int i, j;
	for (i = 0; i  L[j + 1])
				Swap(&L[j], &L[j + 1]);
		}
	}
}

void SelectSort(int L[], int n) {
	int i, j, k, temp;
	for (i = 0; i < n; i++)
	{
		k = i;//记录位置
		for (j = i + 1; j < n; j++)//查找后面的最小值
			if (L[k] > L[j])
				k = j;//记录位置
		if (k != i)//交换位置
			Swap(&L[i],&L[k]);
	}
}
	


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

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

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