c语言:编写冒泡排序,排序一个整形数组(从小到大)

程序:不妨按从小到大排序

#include <stdio.h>

int main ()

{

int a[10];

int i = 0;

int j = 0;

int t = 0;

printf ("input 10 numbers:");

for ( i = 0; i < 10; i++)

{

scanf ("%d",&a[i]);

}

for (i = 0; i < 9; i++)

for ( j = 0; j < 9 - i; j++)

if (a[j] > a[j+1])

{

t = a[j];

a[j] = a[j+1];

a[j+1] = t;

}

printf ("the sorted numbers:\n");

//"the sorted numbers"表示排序的数字

for (i =0; i < 10; i++)

printf ("%d\t", a[i]);

printf ("\n");

return 0;

}

输出结果:

input 10 numbers:11 2 3 5 34 6 78 9 12 62

the sorted numbers:

2       3       5       6       9       11      12      34      62      78

时间: 2024-10-10 13:48:26

c语言:编写冒泡排序,排序一个整形数组(从小到大)的相关文章

【C语言】编写冒泡排序,排序一个整形数组。

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> int main() {  int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };  int len = sizeof(arr)/sizeof(arr[0]);  int i = 0;  int j = 0;  for (; i < len - 1; i++)  {   for (j=0; j 

编写冒泡排序,排序一个整形数组

冒泡法:对于n个数进行从小到大冒泡排序,一共需要冒泡n-1次.两两进行比较,每冒泡排序一次,最大值在最下边(最后一个位置). 比如: 87 12 56 45 78 87和12交换:12 87 56 45 78 87和56交换:12 56 87 45 78 87和45交换:12 56 45 87 78 87和78交换:12 56 45 78 87 到此第一趟排序结束,接下来的每一趟排序都是这样. 代码如下: #include<stdio.h> #include<stdlib.h> v

C语言 有一个整形数组a,有10个元素,要求输出数组中的全部元素

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">有一个整形数组a,有10个元素,要求输出数组中的全部元素</span> 解题思路:引用数组中各元素的值有3种方法:1.下标法,如a[3];2.通过数组名计算数组元素的地址,找出元素的值 3.用指针变量指向数组元素. //用指针变量指向数组元素 #include <std

返回一个整形数组中最大子数组的和

一.要求: 1.要求程序能处理1000个元素 2.每个元素是int32类型的 3.输入一个整形数组,数组里有正数也有负数 4.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和 5.求所有子数组的和的最大值.要求时间复杂度为O(n) 二.设计思想 从总左边(a[0])开始遍历整个数组,一直到最右边结束(a[n-1]),在这个过程中记录到目前为止最大的子数组和maxsofar.maxsofar初始化成0.假如我们已经找到a[0]到a[n-1]之间的最大子数组和,那么a[0]到a[i]之

一个整形数组中最大值求和问题

要求: 1.输入一个整形数组,数组里面有正数也有负数. 2.数组中国连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 当自己看到这个题目的时候,想到了“复杂的问题简单化,一步一步来”,然后在课上老师的引导之下有了自己实现这个功能的方法.最终自己用了两者方法实现功能,但是在第二种方法上花费的时间较多,几乎是第一种方法两倍的时间.下面将两种方法一一解释自己的思路. 一.时间复杂度O(n^2) 本次功能实现简单,一共分为3步,首先是实

输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)(解决)

输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和.要求时间复杂度为O(n). 输入描述: [重要]第一行为数组的长度N(N>=1) 接下来N行,每行一个数,代表数组的N个元素 输出描述: 最大和的结果 输入例子1: 8 1 -2 3 10 -4 7 2 -5 输出例子1: 18 思路:对输入的数组进行计算, import java.util.Scanner; public class Main { public static void main(String[]

c语言经典算法——查找一个整数数组中第二大数

题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1赋给max2,使原先最大的数成为第二大的数,再将这个数a赋给max1,如果这个数a比max1小但比max2大,则将这个数a赋值给max2,依次类推,直到数组中的数都比较完. c语言代码: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #defin

输入一个整形数组,元素有正有负,一个或者多个连续的元素为其子数组,求所有子数组中和的最大值

public class Zhejiang { public static void main(String[] args) { int[] arr=new int[] {1,-2,3,10,-4,7,2,-5}; int i=getGreatestSum(arr); System.out.println(i); } private static int getGreatestSum(int[] arr) { if (arr==null||arr.length==0) { return 0; }

找出一个整形数组中第二大的数字

如何在时间复杂度为O(n)内找出数组中第二大的数字? 通过设置两个变量,一个保存最大值,一个保存第二大值,通过在找最大值的过程中,原来的最大值逐渐变为第二大值.一种实现代码如下(Java版): 1 /** 2 * 在时间复杂度为O(n)内找出数组的第二大的数字 3 * @author JiaJoa 4 * 5 */ 6 public class Algorithm_GetSecondMax { 7 8 public static void main(String[] args) { 9 // T