当前位置: 首页 > news >正文

甘南网站建设百度优化服务

甘南网站建设,百度优化服务,小程序登录界面设计,中华会计网校目录 MT1401归并排序 MT1402堆排序 MT1403后3位排序 MT1404小大大小排序 MT1405小大大小排序II MT1406数字重排 MT1407插入 MT1408插入 MT1409旋转数组 MT1410逆时针旋转数组 MT1401归并排序 c 语言实现代码 #include <stdio.h>// merge two subarrays void merge(int a…

目录

        MT1401·归并排序

        MT1402·堆排序

        MT1403·后3位排序

        MT1404·小大大小排序

        MT1405·小大大小排序II

        MT1406·数字重排

        MT1407·插入

        MT1408·插入

        MT1409·旋转数组

        MT1410·逆时针旋转数组


MT1401·归并排序

c 语言实现代码

#include <stdio.h>// merge two subarrays
void merge(int arr[], int left, int mid, int right) {int i, j, k;int n1 = mid - left + 1; // left sonArrayint n2 = right - mid;    // right sonArray// create new arrayint L[n1], R[n2];for (i = 0; i < n1; i++) {L[i] = arr[left + i];}for (j = 0; j < n2; j++) {R[j] = arr[mid + 1 + j];}i = 0;j = 0;k = left;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++;}while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}void mergeSort(int arr[], int left, int right) {if (left < right) {int mid = left + (right - left) / 2;mergeSort(arr, left, mid);mergeSort(arr, mid + 1, right);merge(arr, left, mid, right);}
}int main() {int arr[10];for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}mergeSort(arr, 0, 10 - 1);for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;
}

MT1402·堆排序

 

c 语言实现代码

#include <stdio.h>// swap two element vlaue
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}void heapify(int arr[], int n, int i) {int largest = i;       // root 节点int left = 2 * i + 1;  // 左子节点int right = 2 * i + 2; // 右子节点if (left < n && arr[left] > arr[largest]) {largest = left;}if (right < n && arr[right] > arr[largest]) {largest = right;}if (largest != i) {swap(&arr[i], &arr[largest]);heapify(arr, n, largest);}
}void heapSort(int arr[], int n) {for (int i = n / 2 - 1; i >= 0; i--) {heapify(arr, n, i);}for (int i = n - 1; i >= 0; i--) {swap(&arr[0], &arr[i]);heapify(arr, i, 0);}
}int main() {int arr[10];for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}heapSort(arr, 10);for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;
}

MT1403·后3位排序

 

c 语言代码实现

#include <stdio.h>
#include <stdlib.h>
#define N 10int compare(const void *a, const void *b) {int num1 = *(int *)a;int num2 = *(int *)b;int last_1 = num1 % 1000;int last_2 = num2 % 1000;if (last_1 != last_2) {return last_1 - last_2;} else {return num2 - num1;}
}int main() {int numbers[N];for (int i = 0; i < N; i++) {scanf("%d", &numbers[i]);}qsort(numbers, N, sizeof(10), compare);for (int i = 0; i < N; i++) {printf("%d ", numbers[i]);}return 0;
}

MT1404·小大大小排序

 

c 语言代码实现 

#include <stdio.h>
#include <stdlib.h>#define SIZE 10// 升序排序的比较函数
int ascending(const void *a, const void *b) { return (*(int *)a - *(int *)b); }// 反转函数 用于将下标N到M的元素反转
void reverse(int arr[], int start, int end) {while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}
}int main() {int arr[SIZE];int N, M;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d %d", &N, &M);// 对整个数组进行升序排序qsort(arr, SIZE, sizeof(int), ascending);// 反转下标 N 到 M 的部分reverse(arr, N, M);for (int i = 0; i < SIZE; i++) {printf("%d ", arr[i]);}return 0;
}

MT1405·小大大小排序II

 

c 语言代码实现

#include <stdio.h>
#include <stdlib.h>#define SIZE 10// 升序排序的比较函数
int ascending(const void *a, const void *b) { return (*(int *)a - *(int *)b); }// 反转函数 用于将下标N到M的元素反转
void reverse(int arr[], int start, int end) {while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}
}int main() {int arr[SIZE];int N;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d", &N);// 对整个数组进行升序排序qsort(arr, SIZE, sizeof(int), ascending);// 反转下标 N 到 M 的部分reverse(arr, N, SIZE - 1);for (int i = 0; i < SIZE; i++) {printf("%d ", arr[i]);}return 0;
}

MT1406·数字重排

这道题 c 案例一直出问题 有解决的可以在评论区d我

c 语言实现

#include <stdio.h>
#include <stdbool.h>// 去重函数:从数组a中去重,结果存入数组b,返回去重后的长度
int del(int a[], int b[], int n) {int c = 0;for (int i = 0; i < n; i++) {bool flag = true;for (int j = 0; j < c; j++) {if (a[i] == b[j]) { // 如果a[i]已在b中,设置标志为falseflag = false;break;}}if (flag) { // 如果a[i]不在b中,加入bb[c++] = a[i];}}return c;
}// 排序函数
void sort(int arr[], int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main() {int a, b, c, len = 0;// 输入三个数字scanf("%d %d %d", &a, &b, &c);int A[6], B[6];A[len++] = a * 100 + b * 10 + c;A[len++] = a * 100 + c * 10 + b;A[len++] = b * 100 + a * 10 + c;A[len++] = b * 100 + c * 10 + a;A[len++] = c * 100 + a * 10 + b;A[len++] = c * 100 + b * 10 + a;// 去重int newLen = del(A, B, len);// 排序sort(B, newLen);// 输出结果for (int i = 0; i < newLen; i++) {printf("%d\n", B[i]);}return 0;
}

MT1407·插入

 

c 语言实现代码

#include <stdio.h>
#define SIZE 10void sort(int arr[], int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int insertPoistion(int arr[], int len, int n) {int left = 0;int right = len - 1;while (left <= right) {int mid = (left + right) / 2;if (arr[mid] < n) {left = mid + 1;} else {right = mid - 1;}}return left;
}int main() {int arr[SIZE + 1], n;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d", &n);sort(arr, SIZE);int pos = insertPoistion(arr, SIZE, n);for (int i = SIZE; i > pos; i--) {arr[i] = arr[i - 1];}arr[pos] = n;for (int i = 0; i <= SIZE; i++) {printf("%d ", arr[i]);}return 0;
}

MT1408·插入

c 语言代码实现

#include <stdio.h>int insertPosition(int arr[], int len, int n) {int left = 0;int right = len - 1;while (left <= right) {int mid = (left + right) / 2;if (arr[mid] < n) {left = mid + 1;} else {right = mid - 1;}}return left;
}int main() {int N;int array[N + 1];int insertNumber;scanf("%d", &N);for (int i = 0; i < N; i++) {scanf("%d", &array[i]);}scanf("%d", &insertNumber);int pos = insertPosition(array, N, insertNumber);for (int i = N; i > pos; i--) {array[i] = array[i - 1];}array[pos] = insertNumber;for (int i = 0; i < N + 1; i++) {printf("%d ", array[i]);}return 0;
}

MT1409·旋转数组

 

c 语言代码实现

 

#include <stdio.h>void rotate_array(int arr[], int length, int n) {// 处理 N 的值,确保在有效范围内n = n % length;  // 处理 N 大于数组长度的情况if (n < 0) {n += length;  // 将负数旋转转换为正数旋转}// 创建一个临时数组来存储旋转后的结果int temp[length];// 进行旋转for (int i = 0; i < length; i++) {temp[(i + n) % length] = arr[i];}// 将结果复制回原数组for (int i = 0; i < length; i++) {arr[i] = temp[i];}
}int main() {int arr[10];int n;// 输入整型元素for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}// 输入旋转次数 Nscanf("%d", &n);// 旋转数组rotate_array(arr, 10, n);// 输出结果for (int i = 0; i < 10; i++) {printf("%d", arr[i]);if (i < 9) {printf(" ");  // 输出空格分隔}}printf("\n");return 0;
}

MT1410·逆时针旋转数组

c 语言实现代码

#include <stdio.h>void rotateArrayCounterClockwise(int array[], int N, int M) {M = M % N; // 计算有效的旋转次数int result[N];// 将前 M 个元素放在新数组的末尾for (int i = 0; i < N - M; i++) {result[i] = array[M + i];}// 将前 M 个元素移动到新数组的开头for (int i = 0; i < M; i++) {result[N - M + i] = array[i];}// 将新数组的内容复制到原数组for (int i = 0; i < N; i++) {array[i] = result[i];}
}int main() {int N, M;scanf("%d %d", &N, &M);int array[N];for (int i = 0; i < N; i++) {scanf("%d", &array[i]);}rotateArrayCounterClockwise(array, N, M);for (int i = 0; i < N; i++) {printf("%d ",array[i]);}return 0;
}
http://www.hkea.cn/news/962680/

相关文章:

  • 网站建设前景怎么样google优化师
  • 上海免费网站建设淘宝引流推广怎么做
  • 单位网站建设目的西安网站建设公司排行榜
  • 福州制作网站软件无人在线观看高清视频单曲直播
  • 建设银行卡网站百度账号登录个人中心
  • 网站显示500错误怎么解决方法seo网站推广排名
  • 广告免费设计在线生成网站排名优化
  • 余姚公司网站建设怎么建网址
  • 网站域名授权怎么做市场营销案例100例
  • kindeditor代码高亮 wordpressseo优化排名经验
  • 家乡介绍网页设计上海网站排名优化
  • 广州黄埔网站制作百度sem是什么意思
  • 网站流量分析网站网络推广营销网
  • 化妆品网站建设计划书网站维护是什么意思
  • 建设局网站公告宣传推广的形式有哪些
  • 网站基本架构设计的主要步骤什么软件可以排名次
  • 代做毕业设计网站多少钱网站推广交换链接
  • 苹果指争议广告lg广告北京seo公司网站
  • flash网站制作公司能打开各种网站的浏览器下载
  • 网站开发是叫系统吗站长工具seo排名查询
  • 站长之家html模板西安网站seo技术厂家
  • 重庆网站建设 渝seo交流论坛
  • 洛阳市网站建设宁波seo网络推广软件系统
  • 做网站用建站模版好还是定制好百度站点
  • 关注济南网站建设深圳市企业网站seo
  • 安溪县住房和城乡建设网站色盲
  • 合肥做英文网站今日头条国际军事新闻
  • 西安有哪些做网站的公司好邵阳疫情最新消息
  • asia域名的网站竞价广告
  • 怎么注册公司支付宝账号seo求职信息