请大佬帮忙编一个c语言程序
发布网友
发布时间:2023-08-14 06:04
我来回答
共3个回答
热心网友
时间:2024-11-17 16:25
键盘上输入数,然后排序的代码如下:
#include <stdio.h>
int main()
{
int i, j, a[100], m, n, temp;
printf("输入数据数量:\n");
scanf("%d",&n);
printf("输入%d个数据:\n",n);
for (i=0; i<n; i++) scanf("%d", &a[i]);
//选择排序
for (j=0; j<n-1; j++)
{
m = j;
for (i=j+1; i<n; i++)
{
if (a[i] < a[m])
{
m = j;
}
}
temp = a[j];
a[j] = a[m];
a[m] = temp;
}
//显示结果
for (i=0; i<n; i++)
{
printf("%4d", a[i]);
}
return 0;
}
从小到大选择排序的基本思想是,如果有N个元素需要排序,那么首先从N个元素中找到最小的那个元素与第0位置上的元素交换(如果没有比原本在第0位置上的元素小的就不用交换了,后面的同样是),然后再从剩下的N-1个元素中找到最小的元素与第1位置上的元素交换,之后再从剩下的N-2个元素中找到最小的元素与第2位置上的元素交换,直到所有元素都排序好。
追问
不对呀 有错误
追答应该是:
temp = a[j];
a[j] = a[m];
代码修改好,重新复制
热心网友
时间:2024-11-17 16:26
#include <stdio.h>
#include <malloc.h>
void print(int *arr, int ln)
{
int i = 0;
for (; i < ln; ++i)
{
printf("%5d ", arr[i]);
}
printf("\n");
}
void bubbleSort(int *arr, int n)
{
int x, y;
do {
y = 0;
for (x = 0; x < n - 1; x++) {
if (arr[x] > arr[x + 1]) {
const int temp = arr[x];
arr[x] = arr[x + 1];
arr[x + 1] = temp;
y = 1;
}
}
} while (y);
}
int main()
{
int i, n, *p;
printf("输入数据数量:");
scanf("%d", &n);
p = (int*)malloc(sizeof(int)*n);
printf("输入%d个数据:", n);
for (i = 0; i < n; i++) scanf("%d", p + i);
printf("input :"); print(p, n);
bubbleSort(p, n);
printf("sorted:"); print(p, n);
free(p);
return 0;
}
热心网友
时间:2024-11-17 16:26
#include<stdio.h>
int main(){
int i,j,k,N;
scanf("%d\n",&N);
int arr[N];
for(i=0;i<N;i++){
scanf("%d\n",&arr[i]);
}
for(j=0;j<N;j++){
for(k=j+1;j<N-j;j++){
if(arr[j]>arr[k]){
int temp=arr[j];
arr[j]=arr[k];
arr[k]=temp;
}
}
}
for(int m=0;m<N;m++){
printf("%d\n",arr[m]);
}
}追答冒泡排序