冒泡排序(数组方法和指针方法)

数组方法:

#include<stdio.h>

#include<stdlib.h>

void bubble_sort(int arr[], int sz )

{

int i = 0;

int j = 0;

for (j = 0; j < sz - 1; j++)    //决定最终排序出来需要冒多少次

{

for (i = 0; i < sz - 1 - j; i++)    //决定一次冒泡需要比较多少次

{

if (arr [i] < arr[i + 1])

{

int tmp = arr [i];

arr[i] = arr [i + 1];

arr[i + 1] = tmp;

}

}

}

}

int main()

{

int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

int i = 0;

bubble_sort(arr, sizeof(arr) / sizeof (arr[0]));

for (i = 0; i < sizeof (arr) / sizeof(arr[0]);i++)

{

printf( "%d  ", arr[i]);

}

printf( "\n");

system( "pause");

return 0;

}

指针方法:

if (*(arr + i) < *(arr + i + 1))

{

int tmp = *(arr + i);

*( arr + i) = *(arr + i + 1);

*( arr + i + 1) = tmp;

}

要注意的是,要理解数组和指针的不同,还有数组和指针写法上的区别。

冒泡排序法的双层循环的上限要掌握好

时间: 2024-10-24 00:08:42

冒泡排序(数组方法和指针方法)的相关文章

一维数组元素的输入输出方法总结

1.数组的下标法:直观且容易理解 如: int a[5],i; printf("Input five numbers:"); for(i=0;i<5;i++) {  scanf("%d",&a[i]); } for(i=0;i<5;i++) {     printf("%4d",a[i]); } 2.数组名首地址法(指针法):指针增1运算的执行效率很高,利用指针的增1运算实现指针的移动,省去了每寻找一个数组元素都要进行的指针算

[Arduino] 逗号分隔文本到数组的两种方法

以下是今日练习通过逗号来分割字符数组/字符串的2个例子和方法" 1.通过indexOf函数 /* *Splitsplit sketch *split a comma-separated string */ String message = "Peter,Paul,Mary"; int commaPosition; void setup(){ Serial.begin(9600); } void loop(){ Serial.println(message); do{ comm

模拟数组的sort排序方法

1 //为Object.prototype增加method方法,下次为对象添加方法不必键入prototype 2 Object.prototype.method=function(name,func){ 3 if(!this.prototype[name]){ 4 this.prototype[name]=func; 5 return func; 6 } 7 }; 8 //为数组添加rank排序方法 9 Array.method("rank",function(f){ 10 var t

C语言: 创建数组的几种方法

创建数组有三种方法 1.声明一个数组,声明时用常量表达式指定数组维数,然后可以用数组名访问数组元素 2.声明一个变长数组,声明时用变量表达式指定数组的维数,C99支持 3.声明一个指针,调用malloc(),然后使用该指针来访问数组元素,指针为常量,不能进行运算 #include <stdio.h> #include <stdlib.h> int main(){ int n; int *p; p = (int *)malloc(n*sizeof(int)); if(scanf(&q

PHP遍历数组的几种方法

这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用.先分别介绍这几种方法 PHP中遍历数组有三种常用的方法: 一.使用for语句循环遍历数组: 二.使用foreach语句遍历数组: 三.联合使用list().each()和while循环遍历数组. 这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用.先分

C++中二维数组传参的方法详解

C++中二维数组传参的方法详解 首先需要明确,C++中其实没有多维数组,所谓的多维数组,其实就是数组的数组: 另外,数组中元素的个数也是数组类型的一部分. 当一个数组的元素仍然是数组时,通常使用2个维度来定义它,一个数组表示数组本身的大小,另一个维度表示其元素大小(它的元素也是数组): int ia[3][4]; //大小为3的数组,每个元素是含有4个整数的数组 int (*p)[4] = ia;//p指向含有4个整数的数组(指向第一个内层数组) 1 将给定第二维长度的二维数组作为形参传递 #i

Objective-C(十六、内存管理,自动释放池,ARC,强指针,弱指针,方法族)——iOS开发基础

结合之前的学习笔记以及参考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,只是作为参考,以苹果官方文档为准~ 十六.内存管理相关知识(二) 1.autorelease,自动释放机制 - (instancetype)autorelease; (1)自动释放池的创建 iOS5.0之前 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //进行一系列操作 //此处不可以使用

JavaScript学习笔记:数组reduce()和reduceRight()方法

很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: var arr = [1,2,3,4,5,6]; Array.prototype.sum = function (){ var sumResult = 0; for (var i = 0; i < this.length; i++) { sumResult += parseInt(this[i]);

javascript中数组的22种方法 (转载)

前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细介绍 对象继承方法 数组是一种特殊的对象,继承了对象Object的toString().toLocaleString()和valueOf()方法 [toString()] toString()方法返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 [注意]该方法的返回值与不使用任何参数