(排序法之快速法)对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
来源:互联网 发布:网络维保年终总结报告 编辑:程序博客网 时间:2024/05/01 17:45
对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
////main.c#include "stdafx.h"#include "head.h"int main(){ /**********定义数组并原样输出*************/ char a[4][7] = { 'g','f','e','d','c','b','a', '7','6','5','4','3','2','1', '1','2','3','4','5','6','7', 'q','w','e','r','t','y','u', }; for (int i = 0; i < 4; i++) { printf("\n第%d行为:", i + 1); for (int j = 0; j < 7; j++)//输出 printf("%c ", *(a[i] + j)); } puts("");//换行 /******开始处理数组并输出*********/ for (int i = 0; i < 4; i++) { if (i /2 == 0) { printf("\n第%d行从小到大排序为:", i+1); quick_rank_string_small_to_large(a[i], 0, 6);//排序,head.c文件中定义 } else { printf("\n第%d行从大到小排序为:", i+1); quick_rank_string_large_to_small(a[i], 0, 6);//排序 } for (int j = 0; j < 7; j++)//输出 printf("%c ", *(a[i] + j)); }}//************************我是分隔符*******************************//***************************************************************//head.c#include "stdafx.h"#include "head.h"//快速法//字符串从小到大排序,left为要排序的字符串的首字母下标,right为末字母下标void quick_rank_string_small_to_large(char *a, int left, int right){ int mid = *(a + (left + right) / 2); int left_go = left, right_go = right; do { while (a[left_go] < mid&&left_go < right) left_go++;//舍去 while (a[right_go] > mid&&right_go > left) right_go--; if (left_go <= right_go) { int tmp = *(a + left_go); *(a + left_go) = *(a + right_go); *(a + right_go) = tmp; left_go++; right_go--; } } while (left_go <= right_go); if (left_go < right) quick_rank_string_small_to_large(a, left_go, right); if (right_go > left) quick_rank_string_small_to_large(a, left, right_go);}//快速法//字符串从大到小排序,left为要排序的字符串的首字母下标,right为末字母下标void quick_rank_string_large_to_small(char *a, int left, int right){ int mid = *(a + (left + right) / 2); int left_go = left, right_go = right; do { while (a[left_go] > mid&&left_go < right) left_go++;//舍去 while (a[right_go] < mid&&right_go > left) right_go--; if (left_go <= right_go)//满足条件交换 { int tmp = *(a + left_go); *(a + left_go) = *(a + right_go); *(a + right_go) = tmp; left_go++; right_go--; } } while (left_go <= right_go); if (left_go < right) quick_rank_string_large_to_small(a, left_go, right);//迭代 if (right_go > left) quick_rank_string_large_to_small(a, left, right_go);//迭代}//************************我是分隔符*******************************//***************************************************************#pragma oncevoid quick_rank_string_small_to_large(char *a, int left, int right);//快速法,从小到大排序void quick_rank_string_large_to_small(char *a, int left, int right);//快速法,从大到小排序
结果如图:
0 0
- (排序法之快速法)对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- C语言编程练习——对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- 二维数组奇数行和偶数行排序
- 数组------奇数偶数排序
- 对二维数组的行、列排序
- 气泡法排序 输入N个数字 由小到大排序
- 对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中
- 把一个二维实型数组a按照第0列的元素进行排序(由小到大排序,用气泡法)
- 数组排序,奇数在前偶数在后
- 题目:数组排序 奇数在前 偶数在后
- 数组排序,奇数在前,偶数在后
- 华为:对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放,且输出数组第一位放奇数
- 对数组中N个整数由小到大排序的几种方法
- 9ksgm0fbmbt9l13c9shkv
- 9ksgm0fbmbt9l13c9shkv
- C#.NET vs2010中使用IrisSkin4.dll轻松实现WinForm窗体换肤功能
- 编辑器性能测试:Atom 、VS Code、Sublime Text
- 变量命名指南
- (排序法之快速法)对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- 神经网络浅讲:从神经元到深度学习
- Mac 环境配置Uiautomator 开发环境环境
- 二叉树(二叉搜索树)上的两节点的公共祖先节点(235和236)
- Android Studio部署apk到手机后手机显示中文乱码解决方法
- Spring 3.x企业开发(一)之登录
- Android Studio运行报错Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- String、StringBuffer与StringBuilder之间区别
- iOS 启动图 加载的问题