方法一普通排序(啥也不是时间复杂度o(n……2)):

#include<stdio.h>
int main(void)
{char a[1000000];scanf("%s",a);int n=0;for(int i=1;a[i-1]!='\0';n++,i++);/*for(int i=1;n>=i;i++)//正常应该这么写{for(int j=1;n>j;j++){if(a[j-1]>a[j]){char t=a[j-1];a[j-1]=a[j];a[j]=t;}}}*/int i,j;//如果编译器不行还是把ij定义在外面吧。。。for(i=1;n>=i;i++){for(j=1;n>j;j++)//不能等于防止越界{if(a[j-1]>a[j]){char t=a[j-1];a[j-1]=a[j];a[j]=t;}}}puts(a);
}

方法二:冒泡排序(最简单的比较快的方法时间复杂度O(n……2)):

(就是第一种优化一下,每一次少算一个,因为最后一个一定排好了)

#include<stdio.h>
int main(void)
{char a[1000000];scanf("%s",a);int n=0;for(int i=1;a[i-1]!='\0';n++,i++);int i,j;//如果编译器不行还是把ij定义在外面吧。。。for(i=1;n>=i;i++){for(j=1;n-i>=j;j++)//不能等于防止越界{if(a[j-1]>a[j]){char t=a[j-1];a[j-1]=a[j];a[j]=t;}}}puts(a);
}

方法三:插入排序(每次找最小值)O(n……2):

#include<stdio.h>
void swap(char *a,char *b)
{char t=*a;*a=*b;*b=t;
}
int main(void)
{char a[1000000];scanf("%s",a);int n=0;for(int i=1;a[i-1]!='\0';n++,i++);int i,j=1;//如果编译器不行还是把ij定义在外面吧。。。for(i=1;n>=i;i++){int min=j-1;for(int k=j;n>=k;k++)if(a[k-1]<a[min])min=k-1;swap(&a[min],&a[j-1]);//交换两个值j++;}puts(a);
}

方法四:快排(最基本的排序)(O(nlogn)比较快):

#include<stdio.h>
void swap(char *a,char *b)
{char t=*a;*a=*b;*b=t;
}
void q_sort(int l ,int r ,char a[])
{if(l>=r)return;int mid=(l+r)>>1;char x=a[mid];int i=l-1,j=r+1;while(i<j){do i++;while(a[i]<x);do j--;while(a[j]>x);if(i<j){swap(&a[i],&a[j]);}}q_sort(l,j,a);q_sort(j+1,r,a);return ;
}
int main(void)
{int n=0;char a[100000];scanf("%s",a);for(int i=1;a[i-1]!='\0';i++,n++);q_sort(0,n-1,a);for(int i=1;n>=i;i++)printf("%c",a[i-1]);return 0;
}

方法五归并排序(稳定,O(nlongn)):

#include<stdio.h>
char c[100010];
void merge_sort(char a[],int l,int r)
{if(l>=r)return;int mid=(l+r)>>1;merge_sort(a,l,mid);merge_sort(a,mid+1,r);int i=l,j=mid+1,k=0;while(i<=mid&&j<=r){if(a[i]<a[j])c[k++]=a[i++];elsec[k++]=a[j++];}while(i<=mid)c[k++]=a[i++];while(j<=r)c[k++]=a[j++];for(i=l,j=0;j<k;i++,j++){a[i]=c[j];}return;
}
int main(void)
{int n;char a[100000];scanf("%s",a);for(int i=1;a[i-1]!='\0';i++,n++);merge_sort(a,0,n-1);puts(a);return 0;
}

方法六:(桶排序O(n))

#include<stdio.h>
int main(void)
{int a[400]={0};char b;while(scanf("%c",&b)!=EOF){a[b]++;}for(int i=1;400>=i;i++){for(int j=1;a[i-1]>=j;j++)printf("%c",i-1);}return 0;
}

方法七q_sort;

#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a, const void *b)
{return *(char*)a - *(char*)b; //由小到大排序//return *(int *)b - *(int *)a; 由大到小排序
}
int main(void)
{int n;char a[10000];scanf("%s",a);for(int i=1;a[i-1]!='\0';i++,n++);qsort(a, n, sizeof(char), cmp);puts(a);return 0;
}

还有诸多例如堆排序,选择排序。等等,其实也就快排和归并有点用,其他都没什么用。。。

供自己以后复习使用

将一个字符串从小到大排序输出相关推荐

  1. c语言三个数从小到大排序/输出

    c语言三个数从小到大排序/输出 任意输入 3 个整数,编程实现对这 3 个整数由小到大进行排序. (1)定义数据类型,本实例中 a.b.c.t 均为基本整型. (2) 使用输入函数获得任意 3 个值赋 ...

  2. python将一个字符串逆序输出

    将一个字符串逆序输出 a = '12345678' print(a[::-1])

  3. c语言三个数从小到大排序/输出_C语言经典100题(6)

    1 上期答案揭晓 首先给大家看看上一篇文章C语言经典100题(5)中第三部分编程题的答案: #include int main(){ int x,y,z,t; printf("\n请输入三个 ...

  4. python用户输入字符串串从小到大排序_python字符串从小到大排序

    python字符串排序问题 a='AADFabddefgilmrsss' 请将该字符串a里的单词重新排序(a-z),并且重def char_cmp(a, b): #实现你的比较规则, 分太少,不值为你 ...

  5. 将一个字符串逆序输出

    将输入的一个字符串逆序输出.例如,输入abcde,则输出edcba. 用普通函数和递归函数实现. 普通函数源程序: #include<stdio.h> #include<string ...

  6. c语言三个数从小到大排序/输出_我的c语言笔记(三)

    int表达式 这个表达式存在的目的在于将表达式转为整数. 比如: float a=9999.9999: int b; b=(int)(a/1000); 就可以得到9啦,别忘了套上固定格式哦- 然后我们 ...

  7. java三个整型变量_初值自定义.if按由小到大的顺序输出这三个数_C语言实现3个数从小到大排序/输出的方法示例...

    前言 本文主要给大家介绍了一个功能,任意输入 3 个整数,编程实现对这 3 个整数由小到大进行排序.下面话不多少了,来一起看看详细的介绍吧 实现过程: (1)定义数据类型,本实例中 a.b.c.t 均 ...

  8. python将一个字符串反转并输出_逆转字符串—输入一个字符串,将其逆转并输出。...

    实现Python字符串反转有4种方法: 1.列表的方式: def rev(s): a = list(s) a.reverse() return (''.join(a)) a = rev('huowuz ...

  9. c#三个数从小到大排序_C语言实现三个数从小到大排序/输出

    任意输入 3 个整数,编程实现对这 3 个整数由小到大进行排序. 实现过程: (1)定义数据类型,本实例中 a.b.c.t 均为基本整型. (2) 使用输入函数获得任意 3 个值赋给 a.b.c. ( ...

最新文章

  1. 2022-2028年中国急救中心行业发展战略规划及未来前景展望报告
  2. 【Smart_Point】unique_ptr中独占指针使用MakeFrame
  3. 天下程序员苦文档久已 | 《活文档》第一波短评
  4. Linux网络技术管理
  5. Spring MVC集成Log4j
  6. MySQL 后from多个表_MYSQL回顾(多表查询相关)
  7. Java注解全面解析
  8. php适配模式实例,php适配器模式简单应用示例
  9. 人生聚散,一切随缘!
  10. php ob缓存原理介绍
  11. SSM-物流管理常见问题4 前端向后端传递数据
  12. 手机能给电脑装系统吗_使用手机给电脑装系统的方法
  13. 纪录篇 之 我收集整理的一些网址(不断更新 ing)
  14. 2014全国计算机等级考试四级数据库工程师考试大纲,全国计算机等级考试四级数据库工程师考试大纲...
  15. 提供一个中国身份证号码判断的类
  16. regopenkeyexfailed什么意思_外置网卡驱动安装出现RegOpenKeyEx Failed,怎么回事?
  17. HoloLens开发的需求与标准总结
  18. 2022-2028年全球与中国个人冷却装置行业竞争格局与投资战略研究
  19. JSON 与 XML 对比
  20. 数据结构之——堆(Heap)

热门文章

  1. Android 修改系统默认拉丁输入法为拼音
  2. android 直播流服务器,视频-Android上的实时流RTMP / RTSP播放器,无需使用webview(WOWZA服务器)...
  3. 差速巡线机器人设计-满分(100+)的报告-2020
  4. 嵌入式系统开发16——嵌入式实时操作系统uC/OS的简介及简单应用
  5. python3.5安装numpy_python3.5如何安装numpy
  6. 未能连接到驱动人生服务器,Switch插入电脑后驱动人生提示设备异常怎么办?Switch连接故障解决方法...
  7. 栈外h5跳转app,否则跳商城下载
  8. AndroidManifest.xml之动态修改应用的图标和应用名称
  9. C/C++ typedef用法详解(有排版)
  10. 解决Windows 10 ‘.\wsvd.mexw64‘ 无效: 找不到指定的模块问题