c语言排序

冒泡法排序:

排序过程:
(1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上

(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置

(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
例:

int  main()
{   int a[11],i,j,t;
    printf("Input 10 numbers:\n");
    for(i=1;i<11;i++)
    	scanf("%d",&a[i]);
    printf("\n");
    for(j=1;j<=9;j++)
    	for(i=1;i<=10-j;i++)
		if(a[i]>a[i+1])
         		{t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
    printf("The sorted numbers:\n");
    for(i=1;i<11;i++)
	printf("%d ",a[i]);
}

 

简单选择法排序:

排序过程:
(1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上

(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换—第二趟选择排序

(3)重复上述过程,共经过n-1趟排序后,排序结束

int  main()
{   int a[11],i,j,k,x;
    printf("Input 10 numbers:\n");
    for(i=1;i<11;i++)
    	scanf("%d",&a[i]);
    printf("\n");
    for(i=1;i<10;i++)
   {	k=i;
      	for(j=i+1;j<=10;j++)
             if(a[j]<a[k])  			k=j;

 

if(i!=k)
      	{
                 x=a[i];
                 a[i]=a[k];
                 a[k]=x;
	}
   }
printf("The sortednumbers:\n");
    for(i=1;i<11;i++)
	printf("%d ",a[i]);
}

 

时间: 2025-01-25 10:37:06

c语言排序的相关文章

c语言 排序题(指针) 指针我学的不是很好,请问我的代码哪里有问题?

问题描述 c语言 排序题(指针) 指针我学的不是很好,请问我的代码哪里有问题? 描述 将输入的四个整数按由大到小的顺序输出. 已定义如下swap函数,可实现形参pa和pb所指内存单元的内容交换.请务必使用本函数实现两个变量内容的互换. void swap( int *pa, int *pb) { int t; t=*pa; *pa=*pb; *pb=t; } 输入 输入包含多组数据,每组输入4个整数,用空格隔开. 输出 根据每组输入,输出排序后的4个整数,由空格隔开.输出占一行. 样例输入 4

c语言-关于C语言排序起泡算法的问题

问题描述 关于C语言排序起泡算法的问题 #include void main() { int a, b, c, d; int x[9]; for (a = 1; a<=10;a++) { scanf_s("%d", &x[a]); } for (b = 1; b<=100; b++) { for (c = 0; c < 10-a; c++) { if (x[c+1] < x[c]) { d = x[c]; x[c] = x[c+1]; x[c+1] =

代码-如何区别C语言排序方法?

问题描述 如何区别C语言排序方法? C语言排序方法冒泡法.选择法.插入法.折半查找法,这几种方法如何区别呢?代码分别如何表达呢?求大侠指点 解决方案 C语言中的排序方法C语言的一些排序方法c语言基础知识之排序方法 解决方案二: 你先弄清楚各个排序的原理,就能区分了

Go语言排序与接口实例分析_Golang

本文实例讲述了Go语言排序与接口用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: import "fmt" type Sorter interface {   Len() int   Less(i, j int) bool   Swap(i, j int) } type Xi []int type Xs []string func (p Xi) Len() int { return len(p) } func (p Xi) Less(i int, j int) bool {

常用的C语言排序算法(两种)_C 语言

1. 要求输入10个整数,从大到小排序输出 输入:2 0 3 -4 8 9 5 1 7 6 输出:9 8 7 6 5 3 2 1 0 -4 解决方法:选择排序法 实现代码如下: #include <stdio.h> int main(int argc, const char * argv[]) { int num[10],i,j,k,l,temp; //用一个数组保存输入的数据 for(i=0;i<=9;i++) { scanf("%d",&num[i]);

c语言排序算法总结

一.希尔(Shell)排序法 /* Shell 排序法 */ #include <stdio.h> void sort(int v[],int n) {      int gap,i,j,temp;      for(gap=n/2;gap>0;gap /= 2) /* 设置排序的步长,步长gap每次减半,直到减到1 */      {           for(i=gap;i<n;i++)  /* 定位到每一个元素 */           {                f

简单了解C语言中直接插入排序与直接选择排序实现_C 语言

直接插入排序基本思路: 1. 从a[0]开始,也就是从1个元素开始是有序的,a[1]~a[n-1]是无序的. 2. 从a[1]开始并入前面有序的数组,直到n-1. #include <stdio.h> #define N 5 void insertsort(int a[], int n); void swap(int *x, int *y); void insertsort(int a[], int n){ int i,j; for(i=1; i<n; i++){ for(j=i; j&

C++实现各种排序算法类汇总_C 语言

C++可实现各种排序算法类,比如直接插入排序.折半插入排序.Shell排序.归并排序.简单选择排序.基数排序.对data数组中的元素进行希尔排序.冒泡排序.递归实现.堆排序.用数组实现的基数排序等. 具体代码如下: #ifndef SORT_H #define SORT_H #include <iostream> #include <queue> using namespace std; // 1.直接插入排序 template<class ElemType> void

基于C++实现的各种内部排序算法汇总_C 语言

提起排序算法相信大家都不陌生,或许很多人已经把它们记得滚瓜烂熟,甚至随时可以写出来.是的,这些都是最基本的算法.这里就把各种内部排序算法总结归纳了一下,包括插入排序(直接插入排序,折半插入排序,希尔排序).交换排序(冒泡排序,快速排序).选择排序(简单选择排序,堆排序).2-路归并排序.(另:至于堆排序算法,前面已经有一篇文章针对堆排序的算法实现做了详细的描述) C++实现代码如下: /*******************************************************