排序---

排序的基本概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

冒泡排序

在这里插入图片描述
示例:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<sys/timeb.h>


#define MAX 10000

long getSystemTime()
{
   
	struct timeb tb;
	ftime(&tb);//取系统的时间,精确到毫秒,其返回一个结构体
	return tb.time * 1000 + tb.millitm;//将秒转换成毫秒,转换单位为1000,millitm表示毫秒
}



//交换函数
//void Swap(int* a, int* b)
//{
   
//	int temp = *a;
//	*a = *b;
//	*b = temp;
//}


//冒泡排序
void BubbleSort(int arr[], int length)
{
   
	for (int i = 0; i < length - 1; i++)
	{
   
		for (int j = 0; j < length - i - 1; j++)
		{
   
			if (arr[j] > arr[j + 1])
			{
   
				/*Swap(&arr[j], &arr[j + 1]);*/
				int  temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}


改进的冒泡排序
//int flag = 0;//表示没有排序好
//void BubbleSort(int arr[], int length)
//{
   
//	for (int i = 0; i < length - 1; i++)
//	{
   
//		flag = 1;//认为已经排序好
//		for (int j = 0; j < length - i - 1; j++)
//		{
   
//			if (arr[j] > arr[j + 1])
//			{
   
//				flag = 0;
//				/*Swap(&arr[j], &arr[j + 1]);*/
//				int  temp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = temp;
//			}
//		}
//	}
//}


//打印函数
void PrintArray(int arr[], int length)
{
   
	for (int i = 0; i < length; i++)
	{
   
		printf("%d ", arr[i]);
	}
	printf("\n");
}
int main()
{
   
	int arr[MAX];
	srand((unsigned int)time(NULL));//随机种子
	for (int i = 0; i < MAX; i++)
	{
   
		arr[i] = rand() % MAX;
	}
	printf("排序前:\n");
	//PrintArray(arr, MAX);
	long t_start = getSystemTime();
	BubbleSort(arr, MAX);
	long t_end = getSystemTime();
	printf("冒泡排序%d个元素所需的时间是%d\n", MAX, t_end - t_start);

	//PrintArray(arr, MAX);


	return 0;
}

结果:

冒泡排序10000个元素所需的时间是179

选择排序

在这里插入图片描述
示例:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/timeb.h>
#include<time.h>


#define MAX 10000

long getSystemTime()
{
   
	struct timeb tb;
	ftime(&tb);//取系统的时间,精确到毫秒,其返回一个结构体
	return tb.time * 1000 + tb.millitm;//将秒转换成毫秒,转换单位为1000,millitm表示毫秒
}

//交换函数
void Swap(int* a, int* b)
{
   
	int temp = *a;
	*a = *b;
	*b = temp;
}

//打印函数
void PrintArray(int arr[], int length)
{
   
	for (int i = 0; i < length; i++)
	{
   
		printf("%d ", arr[i]);
	}
	printf("\n");
}


//改进的冒泡排序
int flag = 0;//表示没有排序好
void bubblesort(int arr[], int length)
{
   
	for (int i = 0; i < length - 1; i++)
	{
   
		flag = 1;//认为已经排序好
		for (int j = 0; j < length - i - 1; j++)
		{
   
			if (arr[j] > arr[j + 1])
			{
   
				flag = 0;
				/*swap(&arr[j], &arr[j + 1]);*/
				int  temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

//选择排序,只是减少交换次数
void 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值