基本的排序算法



void BubbleSort(int arr[],int size)

{

assert(arr);

int iBeign = 0;

int jBeign = 0;

int flag = 1;

int temp = 0;


for (iBeign = 1; (iBeign < size) && (flag == 1);iBeign++)

{

flag = 0;

for (jBeign = 0; jBeign < size - iBeign; jBeign++)

{

if (arr[jBeign] > arr[jBeign + 1])

{

flag = 1;

temp = arr[jBeign];

arr[jBeign] = arr[jBeign + 1];

arr[jBeign + 1] = temp;

}

}

}

}


void SelectSort(int arr[], int size)

{

assert(arr);

int iBeign = 0;

int jBeign = 0;

int Small= 0;

int temp = 0;


for (iBeign = 0; iBeign < size; iBeign++)

{

Small = iBeign;

for (jBeign = iBeign + 1; jBeign < size; jBeign++)

{

if (arr[jBeign] < arr[Small])

{

Small = jBeign;

}

}


if (Small != iBeign)

{

temp = arr[Small];

arr[Small] = arr[iBeign];

arr[iBeign] = temp;

}

}

}


void InsertSort(int arr[], int size)

{

assert(arr);

int iBeign = 0;

int jBeign = 0;

int key = 0;


for (iBeign = 1; iBeign < size; iBeign++)

{

key = arr[iBeign];

jBeign = iBeign - 1;


while ( (jBeign >= 0 ) && (key < arr[jBeign]) )

{

arr[jBeign + 1] = arr[jBeign];

arr[jBeign] = key;

jBeign--;

}

}

}


void Quick(int arr[], int low,int high)  //一趟快排

{

assert(arr);

int i = low;

int j = high;

int key = arr[low];


while (i < j)

{

while ((i < j) && (key < arr[j]))

{

j--;

}

if (i < j)

{

arr[i] = arr[j];

i++;

}

while ((i < j) && (key > arr[i]))

{

i++;

}

if (i < j)

{

arr[j] = arr[i];

j--;

}

}


arr[i] = key;


if (i > low)

{

Quick(arr, low , i - 1);

}

if (j < high)

{

Quick(arr, j + 1, high);

}

}


void QuickSort(int arr[], int size)

{    

     assert(arr);

Quick(arr, 0, size - 1);

}



int dlta[] = { 5, 3, 2, 1};  //增量序列


void ShellInsert(int arr[] ,int size ,int dk)

{

assert(arr);

int iBegin = 0;

int jBegin = 0;

int key = 0;


for (iBegin = dk; iBegin < size; iBegin++)

{

key = arr[iBegin];

jBegin = iBegin - dk;


while ((jBegin >= 0) && (key < arr[jBegin] ))

{

arr[jBegin + dk] = arr[jBegin];

arr[jBegin] = key;

jBegin -= dk;

}

}

}


void ShellSort(int arr[], int size,int t)

{

int i = 0;


for (i = 0; i < t;i++)

{

ShellInsert(arr, size, dlta[i]);

}

}


void Heapjust(int arr[], int size,int h)

{

assert(arr);

int i = h; 

int j = 2 * i + 1;

int key = arr[i];

int flag = 0;


while ( (j < size) && (flag != 1))

{

if ((j < size - 1) && (arr[j] < arr[j + 1]))   //建立大堆 注意点1

{

j++;

}


if (key > arr[j])     //注意点2

{

flag = 1;

}

else

{

arr[i] = arr[j];

i = j;

j = 2 * i + 1;

}

}


arr[i] = key;

}


void MinHeapInit(int arr[], int size)

{

assert(arr);

int i = 0;


for (i = (size - 2) / 2; i >= 0; i--)

{

Heapjust(arr, size, i);

}

}


void HeapSort(int arr[], int size)

{

assert(arr);

int i = 0;

int temp = 0;


MinHeapInit(arr, size);


for (i = size - 1; i >= 0; i--)

{

temp = arr[0];

arr[0] = arr[i];

arr[i] = temp;


Heapjust(arr, i, 0);

}

}


int TR[size] = { 0 };   //辅助归并排序开辟的空间,, 辅助存储 O(n)

//int arr[]  TR数组的大小要与要排序数组arr的大小一样

//Merging Sort(2- 路归并排序)

//有序的arr[start,...,mid]和arr[mid+1,...,end]归并为有序的TR[i,...,n]

void Merge(int arr[], int TR[],int start,int mid, int end)

{

assert(arr);

assert(TR);

int iBegin = start;

int jBegin = mid + 1;

int data = 0;

int iTR = start;


while ( (iBegin <= mid) && (jBegin <= end) )  //链表合并思想

{

if (arr[iBegin] > arr[jBegin])

{

data = arr[jBegin];

jBegin++;

}

else

{

data = arr[iBegin];

iBegin++;

}


TR[iTR++] = data;

}


while (iBegin <= mid)

{

TR[iTR++] = arr[iBegin++];

}


while (jBegin <= end)

{

TR[iTR++] = arr[jBegin++];

}


while (--iTR >= start)

{

arr[iTR] = TR[iTR];

}

}


//将arr[start,...,t]归并排序到TR[start,...,t]

void MSort(int arr[], int TR[], int start, int end) 

{

assert(arr);

assert(TR);

int mid = 0;


if (start == end)

{

return;

}

else

{

mid = (start + end) / 2;

MSort(arr, TR, start, mid);

MSort(arr, TR, mid + 1, end);

Merge(arr, TR, start, mid, end);

}

}


void MergeSort(int arr[],int TR[], int size)

{

assert(arr);

assert(TR);


MSort(arr, TR, 0, size - 1);

}

本文出自 “埋葬的记忆” 博客,谢绝转载!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值