作业问题,非常急,请务必在11点五十之前回答

#inclu

#include <stdio.h>
#define MAX 6

void sort(int [], int);

int main()
{
    int data[MAX] = {5, 3, 8, 1, 2, 7};
    int n, j;

    n = MAX;
    sort(data, n);

    for (j = 0; j<n; j++) printf(" %d ", data[j]);
    printf("\n");
}

/* sort 関数を完成してください */
void sort(int data[], int n)
{
        int i, j , temp;
    for(i=0;i<n-1;i++){
        for(j-1;j<n;j++){
            if(data[j]<data[j-1]){
                temp=data[j];
                data[j]=data[j-1];
                data[j-1]=temp;
            }
        }
    }

}

输入9316的出的结果为9631,请问这是插入算法,冒泡排序还是选择排序??

很急,如果可以也请帮我看看上个问题

插入

#include <stdio.h>
#define MAX 6

void sort(int [], int);

int main()
{
    int data[MAX] = {5, 3, 8, 1, 2, 7};
    int n, j;

    n = MAX;
    sort(data, n);

    for (j = 0; j<n; j++) printf(" %d ", data[j]);
    printf("\n");
}

/* sort 関数を完成してください */
void sort(int data[], int n)
{
    int i, j , temp;
    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++){
            if(data[j]>data[j-1]){
                temp=data[j];
                data[j]=data[j-1];
                data[j-1]=temp;
            }
        }
    }

}

 

冒泡排序

这个是冒泡排序

我认为是 选择排序

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

冒泡啊

非常抱歉我代码发错了,刚才太心急发了一个冒泡排序,真正的代码是这个

#include <stdio.h>
#include <stdlib.h>
#define N 4
void sort(int*);
int main()
{
    int *data;
    int i;
    data=(int*)calloc(N, sizeof(int));
    for (i=0; i<N; i++) {
            scanf("%d", data+i);
    }
    sort(data);
    return 0;
    }
    void sort(int *data)
    {
        int i, j, m, temp;
        for(i=0; i<N-1; i++) {
                m = i;
        for(j=i+1; j<N; j++) {
                if(*(data+m) < *(data+j) ) {
                    m = j;
        }
        }
        temp = *(data+i);
        *(data+i) = *(data+m);
        *(data+m) = temp;
        for (j=0; j<N; j++) {
                printf("%d ", *(data+j));
        }
         printf("\n");
         }
          return;
          }

输入9316的出的结果为9631,请问这是插入算法,冒泡排序还是选择排序??

不好意思,我弄错了,应该是冒泡排序

更正下

#include <stdio.h>
#define MAX 6

void sort(int [], int);

int main()
{
    int data[MAX] = {5, 3, 8, 1, 2, 7};
    int n, j;

    n = MAX;
    sort(data, n);

    for (j = 0; j<n; j++) printf(" %d ", data[j]);
    printf("\n");
}

/* sort 関数を完成してください */
void sort(int data[], int n)
{
    int i, j , temp;
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1-i;j++){
            if(data[j]<data[j+1]){
                temp=data[j];
                data[j]=data[j+1];
                data[j+1]=temp;
            }
        }
    }

}

 

是的,我上面发的那段代码不对,你能帮我看一下我下面这个吗,这个才是真正想问的那个代码,到底是冒泡还是插入还是选择?

插入

>是的,我上面发的那段代码不对,你能帮我看一下我下面这个吗,这个才是真正想问的那个代码,到底是冒泡还是插入还是选择?

想问一下楼主现在到底搞懂了没有?