C语言冒泡法用指针实现

//
//  main.c
//  指针和数组
//
//  Created by 邱学伟 on 15/7/25.
//  Copyright (c) 2015年 邱学伟. All rights reserved.
//

#include <stdio.h>
#define N 4

//冒泡法用指针实现
//输入
int *enterNumber();
//排序
void sortNumberAsc(int *ptr);
//输出
void printNumber(int *ptr);

int *enterNumber(){             //输入
    static int ary[N];
    printf("请输入一组数字:");
    for (int i=0; i<N; i++) {
        scanf("%d",&ary[i]);
    }
    int *p=ary;
    return p;
}

void sortNumberAsc(int *ptr){   //排序
    int tempN;
    int i,j;
    //循环趟数
    for (i=0; i<N-1;i++) {
        for (j=0; j<N-1-i; j++) {
            if (*(ptr+j)>*(ptr+j+1)) {
                tempN=*(ptr+j);
                *(ptr+j)=*(ptr+j+1);
                *(ptr+j+1)=tempN;
            }
        }
    }
}

void printNumber(int *ptr){     //输出
    printf("排序之后的数字为:");

    for (int i=0; i<N; i++) {
        printf("%d ",*ptr);
        ptr++;
    }
    printf("\n");
}

int main(int argc, const char * argv[]) {

    //冒泡法用指针实现:

    //输入
    int *ptr=enterNumber();
    //排序
    sortNumberAsc(ptr);
    //输出
    printNumber(ptr);

    return 0;
}

运行结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-11 01:34:24

C语言冒泡法用指针实现的相关文章

关于C语言冒泡法

关于冒泡法案例 !!!问题:用冒泡法对10个数排序(由小到大) 冒泡法的思想:将相邻两个数比较,将小的调到前头. #include <stdio.h>int main(){ int i,j,t,a[10]; for(i = 0;i < 10;i++){ scanf("%d",&a[i]); } printf("\n"); for(j=0;j < 9;j++){ for(i = 0;i < 9-j;i++){ if(a[i]>

C语言冒泡法排序

#include <stdio.h> int main(int argc, char *argv[]) { int a[10]={   0,1,33,200,45,34,89,90,23,13  }; int i,j; int temp; for(i=0;i<10;i++) {   for(j=i+1;j<10;j++) {    if(a[i]<a[j]) {     temp=a[j];     a[j]=a[i];     a[i]=temp; } } } for(i=

C语言常见的排序方法——冒泡法、选择法、插入法

当我们要对C中一组数据进行排序是常见的排序方法有冒泡法.选择法.插入法 冒泡排序法(升序):假设一组数据a[0].a[1].a[2].a[3]...a[n],第一轮:先比较a[0]与a[1].a[1]与a[2]...a[i]与a[i+1]...a[n-1]与a[n]的大小,如果a[i]与a[i+1]不是升序(即a[i] > a[i+1]),那么就将a[i]与a[i+1]的值互换,第一轮过后,a[n]就是最大值:第二轮:运用第一轮同样的方法,比较a[0]与a[1].a[1]与a[2]...a[i]

正宗冒泡法-java语言实现

冒泡法的思想就是:小的不停地"向前跑",大的不停地"向后"冒. 代码如下: public class Main { public static void main(String[] args) { int a[]={7,8,1,3,5}; System.out.println("排序前:"); print(a); bubblesort(a); System.out.println(); System.out.println("排序后:&

C语言实现冒泡法排序

首先我们看冒泡法排序的原理,假设有一个包含6个数字的数组其思路为:每次将相邻两个数比较,将小的调到前面,如果有6个数:8,7,5,4,2,0.第一次先将最前面的两个数8和7对调(看下图).第二次将第二个数和第三个数(8和5)对调.....如此总计进行了5次,得到7-5-4-2-0-8的顺序,可以看到:最大的数8已经沉底,成为最下面的一个数,而小的数上升.经过第一轮(5次比较)后,得到了最大的数9.   然后进行第二轮的比较(见下图),对余下的7,5,4,2,0进行新一轮的比较,以便使次大的数沉底

排序算法(交换法,选择法,插入排序,冒泡法,快速排序算法,C语言举例)

交换法:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动. 简单选择排序:的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕. 插入排序法:有一个已经有序的

C#版 选择法、冒泡法、插入法和快速排序法分析与对比(一)

前言 之前老师就讲过了选择法和冒泡法,之后又提到了插入法和排序法,今天做了一个小DEMO,对比了一下四种方法的效率,当然看了很多大牛也博客,其实算法还设计了时间复杂度和空间复杂度,对于这两个概念,我只能从表面上进行理解,其中涉及到了很多数学的问题,所以就不展开写了. 选择排序 冒泡法 插入法 快速排序法 这部分知识比较新,而且内容比较多,所以打算单独另外总结一遍博客,来详细的总结一下这个方法~ DEMO(比较三个算法所用时间) 先说一下设计的思路,生成要求个数的不重复的随机数,将随机数循环赋给l

冒泡法--分析

冒泡法的基本原理: 1.给定n个数,从第一数字开始依次对相邻的两个数进行比较,当前面的数字大于后面的数字时,就交换位置. 2.经过一轮比较后,最大的数字将位于数组的最右边,即第n位. 3.然后对n-1位数字进行第二轮比较,直到剩下一个数字为止. 分析:  1.从看到n个数,就知道这是需要用到for循环的. 2.接下来就要需要思考,需要几个for循环呢?一般如果一个数字与其他数字进行比较的话,就是单个for循环,需要这种两两比较的话,就需要比较N趟,每趟N次,所以需要两个for循环. 3.好,确定

冒泡法排序_c++实现

看完了郝斌老师的c语言视频,冒泡法排序,就试着写了.我觉得学习算法最重要的不是代码,而是它的原理. 代码: 1 /** 2 * Copyright (c) 1991 - 2016 Arvin Tang. 3 * All rights reserved. 4 * 5 * 文件名称:郝斌C语言视频教程_163_冒泡排序 6 * 简要描述:用冒泡法排序 7 * 8 * 当前版本:1.0 9 * 作 者: 10 * 完成日期:2016-1-9 11 * 修订说明: 12 * 13 * 取代版本: 14