c - 用 C 语言对数组进行冒泡排序

标签 c arrays sorting recursion

    #include <stdio.h>

int main(){

  void sorting(){

    int a[4];
  a[0]=1; 
  a[1]=6;
  a[2]=15; 
  a[3]=3;
  a[4]=19; 
  int size = 4; 

    int t =1; 
  if (size ==0) return; // ie if you reach to the end stop


  int i; 
  for (i=0;i<size-1;i++){ 

    if(a[i+1] >a[i]) { //if the +1 element is bigger than before it do the swap

         int j;
         j= a[i+1]; 
        a[i+1]=a[i]; //swap
         a[i] = j;    //swap 

       }
  }
    sorting(*a,size - 1);//recursion 

void print_int() {
  int i; // Loop counter 

  for (i = 0; i < 4; i++) {
    printf("%d\n", a[i]);
  }}

}  

它编译正常,但是当我尝试运行该文件时什么也没有出现?我的意图是创建一个数组对它们进行排序然后显示它们。

此外,发生递归的代码“sorting(*a,size - 1);//” 如果我尝试用 a[] 替换 *a 就会发生错误。这是为什么? 错误是“']'标记之前的预期表达式错误”!

谢谢。

最佳答案

int a[4];

但是您访问的 a[4]=19; 索引 4 超出范围。您可以访问最高索引3

我认为函数void sorting()应该在main之外定义。嵌套函数是GCC中的GNU扩展。

关于c - 用 C 语言对数组进行冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32589103/

相关文章:

javascript - Javascript 是否通过引用或值将数组传递给函数?

php - 如何在 Laravel 的 MySQL 查询中的 where 子句中使用数组

database - 插入记录时建立索引与不建立索引

rest - 发送 Yii2 REST GET 请求时如何按相关表字段排序

c - Unix/C 中的数据库独立性

c - 由于不正确的重新分配,我是否遇到了段错误?

c# - 正确的 C# Rijndael IV 用法/存储

sorting - 对Mapreduce数据集进行排序

c++ - 如何包含自编译库中的 header ?

c - 为什么我的以下 C 代码中出现段错误?