用指针对c中的数组进行排序

德里克

我正在尝试使用指针而不是数组下标将数组从最小到最大排序。我不确定问题出在哪里,但是当我运行此代码时,将以与输入它们相同的顺序返回值。find_largest和swap函数都完全按照它们说的去做。selection_sort函数使用for循环从右到左(从最大到最小,从右到左)对数字进行排序。我已经凝视了一段时间,它看起来应该可以正常工作,但是就像我说的那样,由于某种原因,数字以与输入时相同的顺序返回。这是我的代码:

#include <stdio.h>

#define N 5                             

void selection_sort(int *a, int n);
int *find_largest(int *a, int n);
void swap(int *p, int *q);

int main(void)
{
  int i;
  int a[N];

  printf("Enter %d numbers to be sorted: ", N);
  for (i = 0; i < N; i++)
    scanf("%d", (a+i));

  selection_sort(a, N);

  printf("In sorted order:");
  for (i = 0; i < N; i++)
    printf(" %d", *(a+i));
  printf("\n");

  return 0;
}

void selection_sort(int *a, int n)
{
        int i = 0;
        int *largest;

        for(i = 0; i < n; i++){
                largest = find_largest(a, n-i);
                swap(largest, a+(n-1-i));
        }

}

int *find_largest(int *a, int n){
        int *p = a;
        int *largest = p;
        for(p = a; p < a+n-1; p++){
                if(*(p+1) > *p){
                        largest = (p + 1);
                }
        }
        return largest;
}


void swap(int *p, int *q){
        int *temp;
        temp = p;
        p = q;
        q = temp;
}
花费

您的代码中有两个错误。一,在find_largest函数中逻辑:

int *find_largest(int *a, int n){
    int *p = a;
    int *largest = p;
    for(p = a; p < a+n-1; p++){
            if(*(p+1) > *largest){     <---- //here you were checking for *(p)
                    largest = (p + 1);
            }
    }
    return largest;

}

另一个是在交换函数中带有指针:

void swap(int *p, int *q){
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中对结构数组进行排序

来自分类Dev

用C中的指针进行scanf

来自分类Dev

冒泡对函数中其他数组的指针数组进行排序(C)

来自分类Dev

在C中使用指针对结构进行冒泡排序

来自分类Dev

在C ++中对共享指针的向量进行排序

来自分类Dev

使用指针对数组进行排序,并且不包含任何索引变量

来自分类Dev

C-与直接对结构进行排序相比,对结构的指针数组进行排序的速度慢(qsort)

来自分类Dev

使用指针对数组进行排序-C编程

来自分类Dev

使用指针对2D数组进行插入排序

来自分类Dev

用数组在C中进行指针减法

来自分类Dev

C编程:使用指针对数组进行排序的函数

来自分类Dev

C ++中的指针数组排序算法

来自分类Dev

在C ++中对指针数组进行排序

来自分类Dev

在C中对char指针数组进行排序

来自分类Dev

QT中数组指针对象的指针

来自分类Dev

使用指针对用户定义对象的C ++数组进行排序?

来自分类Dev

在C ++中对对象数组进行排序

来自分类Dev

在C中对结构数组进行排序

来自分类Dev

用C对数组进行冒泡排序

来自分类Dev

在C ++中对共享指针的向量进行排序

来自分类Dev

对数组C中的元素进行排序

来自分类Dev

在C中对double数组进行排序

来自分类Dev

C:指针数组与指针对指针

来自分类Dev

使用指针对二维数组中的一行中的元素进行排序

来自分类Dev

c - 如何对c中的双指针进行字母排序?

来自分类Dev

在 C 中对 2 Dim 数组进行排序

来自分类Dev

使用C中的指针按升序对数组进行排序

来自分类Dev

用函数对数组进行排序而不使用 C 中的指针是行不通的。为什么?

来自分类Dev

使用快速排序使用指针对数组进行排序

Related 相关文章

热门标签

归档