排序算法

今天把所有排序都理了一遍 其实调试真是好东西 你弄懂思路即使你不会写你跟调试代码走一遍 然后自己写一遍就可以了

网上很多垃圾 测试都过不了再就是即使能过都改了最初的条件 可能我也会有些过不了 (ps 毕竟没有测多少)


直接复制粘贴拷就可以了

第一 冒泡排序 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
#define max 200
void maopao(int *arr,int size)
{
 for (int i = 0; i < size; i++)
 {
  for (int j = 0; j < size - i-1; j++)
  {
   if (arr[j] < arr[j + 1])
   {
    int tmp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = tmp;
   }
  }
 }
}
void show(int *arr,int size)
{
 for (int i = 0; i < size; i++)
 {
  printf("%d ", arr[i]);
 }
}
int main()
{
 int arr[max];
 for (int i = 0; i < max; i++)
 {
  arr[i] = rand();
 }
 maopao(arr, sizeof(arr) / sizeof(arr[0]));
 show(arr, sizeof(arr) / sizeof(arr[0]));
 return 0;
}
2选择法排序
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define SIZE 10
void xuanze(int *arr, int size)
{
 for (int i = 0; i < size; i++)
 {
  for (int j = 0; j < size; j++)
  {
   if (arr[i] < arr[j])
   {
    int tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
   }
  }
 }
}
void show(int *arr,int size)
{
 for (int i = 0; i < size; i++)
 {
  printf("%d   ", arr[i]);
 }
}
int main()
{
 int *arr = (int *)malloc(sizeof(int)*SIZE);
 for (int i = 0; i < SIZE; i++)
 {
  arr[i] = rand();
 }
 xuanze(arr, SIZE);
 show(arr,SIZE);
 return 0;
}
3插入排序
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include<time.h>
#include <iostream>
using namespace std;
#define N 20000
void paixu(int*);
int main()
{
 int i=0;
 int *arr = (int*)malloc(sizeof(int)*N);
 for (i=0; i < N; i++)
 {
  arr[i] = rand();
 }
 paixu(arr);
 int tmp = arr[9998];
 arr[9998] = arr[9990];
 arr[9990] = tmp;
 double start =clock();
 paixu(arr);
 double end = clock();
 for (i = 0; i<N; i++)
  printf("%d ", arr[i]);
 printf("\n");
 cout << end - start;
 return 0;
}
void paixu(int* a) {
 int i = 0, j = 0, k = 0, n = 0;
 for (k = 1; k<N; k++)
 {
  for (i = k, j = i - 1; j >= 0;)
  {
   if (a[j]<a[i])
   {
    n = a[j];
    a[j] = a[i];
    a[i] = n;
    i--;
    j = i - 1;
   }
   else break;
  }
 }
}
4快速排序
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define N 1000000
void queck_sort_tmp(int*arr, int low, int high)
{
 int tmp = low;
 int tmp1 = high;
 if (tmp >=tmp1)
 {
  return;
 }
 int tmp3 = arr[low];
 while (low != high)
 {
  while (1)
  {
   if (low == high)
   {
    arr[high] = tmp3;
    break;
   }
   if (arr[high] >tmp3)
   {
    high--;
   }
   else
   {
    arr[low]=arr[high];
    low++;
    break;
   }
  }
  
  
  while (1)
  {
   if (low == high)
   {
    arr[high] = tmp3;
    break;
   }
   if (arr[low] < tmp3)
   {
    low++;
   }
   else
   {
    arr[high] = arr[low];
    high--;
    break;
   }
  }
 }
 if (low == high)
 {
  arr[high] = tmp3;
 }
 queck_sort_tmp(arr, tmp, high - 1);
 queck_sort_tmp(arr, low + 1, tmp1);
}
void queck_sort(int*arr,int size) //
{
 queck_sort_tmp(arr, 0, size-1);
}
void show(int *arr)
{
 for (int i = 0; i < N; i++)
 {
  printf("%d\n", arr[i]);
 }
}
int main()
{
 int *arr = (int *)malloc(sizeof(int)*N);
 /*int arr[8] = { 8,3,3,5,10,9,7,2 };*/
 for (int i = 0; i < N; i++)
 {
  arr[i] = rand();
 }
 queck_sort(arr, N);
 show(arr);
 return 0;
}
5归并排序
#include<stdio.h>
#include<stdlib.h>
#include <malloc.h>
void guibingpaix(int*arr, int low, int mid, int high)
{
 int q_low = low;
 int q_high = mid;
 int h_low = mid + 1;
 int h_high = high;
 int *brr = (int *)malloc(10* sizeof(int));
 //int brr[10];
 int i = 0;
 while (1)
 {
  if (arr[q_low]<arr[h_low])
  {
   brr[i] = arr[q_low];
   i++;
   q_low++;
  }
  else
  {
   brr[i] = arr[h_low];
   i++;
   h_low++;
  }
  if (h_low == h_high + 1 || q_low == q_high+1)
  {
   break;
  }
 }
 if (h_low == h_high + 1)
 {
  while (q_low!=q_high+1)
  {
   brr[i] = arr[q_low];
   i++;
   q_low++;
  }
 }
 else
 {
  while (h_low!=h_high+1)
  {
   brr[i] = arr[h_low];
   i++;
   h_low++;
  }
 }
 int m = 0;
 while (m<i)
 {
  arr[low++] = brr[m++];
 }
 free(brr);
}
void guibing_1(int*arr, int low, int high)
{
 int mid = (low + high)/2;
 if (low < high)
 {
  guibing_1(arr, low,mid);
  guibing_1(arr, mid + 1, high);
  guibingpaix(arr, low, mid, high);
 }
}
void guibing(int *arr,int size)
{
 guibing_1(arr, 0,size-1);
}
void show(int *arr,int size)
{
 for (int i = 0; i < size; i++)
 {
  printf("%d ", arr[i]);
 }
}
int main()
{
 int arr[9] = { 8,3,3,5,10,9,7,2,20 };
 guibing(arr, sizeof(arr) / sizeof(arr[0]));
 show(arr,sizeof(arr)/sizeof(arr[0]));
}
6希尔排序
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
void xier(int *arr, int n,int size)
{
 for (int i = 0; i < n ; i++)
 {
  int f = 0;
  while (1)
  {   
   if (f == size / n + 1)
   {
    break;
   }
   int j = 0;
   while (1)
   {
    if ((i + (j + 1)*n) >= size)
    {
     break;
    }
    if (arr[i + j*n] > arr[i + (j + 1)*n])
    {
     int tmp = arr[i + j*n];
     arr[i + j*n] = arr[i + (j + 1)*n];
     arr[i + (j + 1)*n] = tmp;
    }
    j++;
   }
   f++;
  }
 }
}
void show(int *arr,int size)
{
 for (int i = 0; i < size; i++)
 {
  printf("%d   ", arr[i]);
 }
}
int main()
{
 int arr[SIZE] = { 1,3,2,78,11,22,99,66,12,8 };
 xier(arr,5,SIZE);
 show(arr, SIZE);
 return 0;
}
7堆排序
#include <stdio.h>
void swap(int *arr, int fu, int zi)
{
 int tmp = arr[fu];
 arr[fu] = arr[zi];
 arr[zi] = tmp;
}
bool cmp(int *arr, int zi_left, int zi_right)
{
 return arr[zi_left] >= arr[zi_right];
}
bool cmp_1(int *arr, int zi_left, int zi_right)
{
 return arr[zi_right] > arr[zi_left];
}
void tiaozhen(int *arr, int zuobiao, int len)
{
 int fu = zuobiao;
 int zi_right = zuobiao * 2 + 2;
 int zi_left = zuobiao * 2 + 1;
 if (zi_left<len&&zi_right<len)
 {
  if (cmp(arr, zi_left, zi_right) && arr[fu] < arr[zi_left])
  {
   swap(arr, fu, zi_left);
   tiaozhen(arr, zi_left, len);
  }
  if (cmp_1(arr, zi_left, zi_right) && arr[fu] < arr[zi_right])
  {
   swap(arr, fu, zi_right);
   tiaozhen(arr, zi_right, len);
  }
 }
 else if (zi_right == len)
 {
  if (arr[zi_left] > arr[fu])
  {
   int tmp = arr[zi_left];
   arr[zi_left] = arr[fu];
   arr[fu] = tmp;
  }
 }
}
void  duipaix(int *arr, int size)
{
 int len = size;
 for (int i = (len - 2) / 2; i >= 0; i--)
 {
  tiaozhen(arr, i, size);
 }
 for (int i = len; i > 0; i--)
 {
  tiaozhen(arr, 0, i);
  int tmp = arr[0];
  arr[0] = arr[i - 1];
  arr[i - 1] = tmp;
 }
}
void show(int *arr, int size)
{
 for (int i = 0; i < size; i++)
 {
  printf("%d ", arr[i]);
 }
}
int main()
{
 int arr[] = { 8,3,11,5,10,7,9,7,2,1,1,20,11,30,22,-1 };
 duipaix(arr, sizeof(arr) / sizeof(arr[0]));
 show(arr, sizeof(arr) / sizeof(arr[0]));
 return 0;
}

就码了怎么多如果不清楚机制可以 加qq 543247517 互相学习  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值