#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;
}
}
}
}
是的,我上面发的那段代码不对,你能帮我看一下我下面这个吗,这个才是真正想问的那个代码,到底是冒泡还是插入还是选择?
插入
>是的,我上面发的那段代码不对,你能帮我看一下我下面这个吗,这个才是真正想问的那个代码,到底是冒泡还是插入还是选择?
想问一下楼主现在到底搞懂了没有?