【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 < len - i-1; j++)
  {
   if (arr[j] < arr[j + 1])
   {
    int tmp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = tmp;
   }
  }
 }
 for (i = 0; i < len; i++)
 {
  printf("%d ", arr[i]);
 }
 system("pause");
 return 0;
}

时间: 2024-11-18 21:18:00

【C语言】编写冒泡排序,排序一个整形数组。的相关文章

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

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

冒泡法:对于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