c语言-?为什么这不排序错了?

问题描述

?为什么这不排序错了?

#include

int main(int argc, const char * argv[]) {
// insert code here...
int i,j;
int a[10];
int iTemp;
int iPos;
printf("为数组元素赋值: n");
/*从键盘为数组元素赋值*/
for (i=0; i<10; i++) {
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
//从小到大排序
for (i=0; i<9;i++) {
iTemp=a[i];
iPos=i;
for (j=i+1; j<10; j++) {
if (a[j]<iTemp) {
iTemp=a[j];
iPos=j;
}/*交换两个元素*/
a[iPos]=a[i];
a[i]=iTemp;
}
}
//输出数组
for (i=0; i<10; i++) {
printf("%dt",a[i]);
if (i==4) {
printf("n");
}
}
return 0;
}

解决方案

 //从小到大排序
for (i=0; i<9;i++) {
iTemp=a[i];
iPos=i;
for (j=i+1; j<10; j++) {
if (a[j]<iTemp) {
iTemp=a[j];
iPos=j;
}/*交换两个元素*/
a[iPos]=a[i];
a[i]=iTemp;
}
}
这段代码是错的,改改,改成下面
//从小到大排序
for (i=0; i<9;i++) {
for (j=i+1; j<10; j++) {
    if (a[j]<a[i]) {
        iTemp = a[i];
        a[i]=a[j];
        a[j]=iTemp;
    }/*交换两个元素*/
}
}

解决方案二:

/*交换两个元素*/
这个不对
iTemp = a[iPos];
a[iPos]=a[i];
a[i]=iTemp;

解决方案三:

include没粘贴好。。。

解决方案四:

解决方案五:

哈哈,下回还是买正版书吧!!好书就要买正版!!

解决方案六:

2006年12月日语二级证2007年12月日语二级证书2007年12月日语一级证书

时间: 2024-12-30 10:44:00

c语言-?为什么这不排序错了?的相关文章

算法 选择排序-C语言关于选择排序法的问题

问题描述 C语言关于选择排序法的问题 #include"stdio.h" #define?N?10 int?main()? { int?i,j,min,tem,a[N];? for(i=0;i ????scanf("%d",&a[i]); for(i=0;i { ????min=i;? ????for(j=i+1;j ?????????if(a[min]>a[j])? ?????????min=j;? ????tem=a[i];? ????a[i]=a

c语言-C语言选择法排序函数的实现问题

问题描述 C语言选择法排序函数的实现问题 我在看C语言程序设计是遇到一个问题,用选择法对数组中的5个整数按由小到大排序 #include int main() { void sort(int array[],int n); int a[5],i; printf("Please input 5 numbers:n"); for(i=0;i<5;i++) scanf("%d",&a[i]); sort(a,5); printf("the sort

printf-c语言ASCII码排序 我的代码哪里有问题?

问题描述 c语言ASCII码排序 我的代码哪里有问题? 描述 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符. 输入 输入数据有多组,每组占一行,有三个字符组成,之间无空格. 输出 对于每组输入数据,输出一行,字符中间用一个空格分开. 样例输入 qwe asd zxc 样例输出 e q w a d s c x z 我的代码是: #include int main() { char a[3],t; while(scanf("%c%c%c",&a[0],&

既然java语言提供了排序算法的封装,为什么我们还要自己写冒泡

问题描述 既然java语言提供了排序算法的封装,为什么我们还要自己写冒泡 一个关于排序的问题:既然java语言提供了排序算法的封装,为什么我们还要自己写冒泡排序?什么时候用到冒泡排序? 解决方案 目的是为了让你学习,冒泡排序是最容易理解的排序算法. 解决方案二: Java语言写的各种排序算法[未完] 解决方案三: java封装好的是快排吧,首先快排是不稳定排序,只是平均时间复杂度最低而已.简单排序中直接插入最好,快速排序最快,当文件为正序时,直接插入和冒泡均最佳.当数据量过大时堆排序的优势又体现

C语言实现合并排序

其基本模式如下: 分解:把一个问题分解成与原问题相似的子问题 解决:递归的解各个子问题 合并:合并子问题的结果得到了原问题的解. 现在就用递归算法,采用上面的分治思想来解合并排序. 合并排序(非降序) 分解:把合并排序分解成与两个子问题 伪代码: MERGE_SORT(A, begin, end)  if begin < end     then mid<- int((begin + end)/2)             MERGE_SORT(A, begin, mid)          

c语言-这个宏调用为什么错了??

问题描述 这个宏调用为什么错了?? #include #define HARMONIC_MEAN(X, Y) ( 1/((1/X+1/Y) / 2) ) int main(void) { printf("harmonic mean of and : %gn", HARMONIC_MEAN(2, 3)); return 0; } 调用错了吗?为什么? 解决方案 error C2124: divide or mod by zero 究其原因,是因为宏定义过程中,变量默认为整型处理,才会导致

C语言实现选择排序、直接插入排序、冒泡排序的示例_C 语言

选择排序选择排序是一种简单直观的排序算法,其核心思想是:遍历数组,从未排序的序列中找到最小元素,将其放到已排序序列的末尾. 时间复杂度:O(n^2) 稳定性 :不稳定 /* * @brief selection sort */ void selection_sort(int a[], int n) { int i, j, min, tmp; for (i = 0; i < n - 1; ++i) { min = i; for (j = i+1; j < n; ++j) { if (a[j] &

c语言-关于希尔排序的c代码问题

问题描述 关于希尔排序的c代码问题 #include #include void xishu(int a[], int n) { int i, j; int d = n / 2; while(d > 0) { for (j = 0, i = d; i < n; i++,j++) { if (a[i] < a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } d = d / 2; } } void main() { for (int

C语言实现选择排序、冒泡排序和快速排序的代码示例_C 语言

选择和冒泡 #include<stdio.h> void maopao(int a[],int len){ int i,j,temp; for(i = 0;i < len - 1 ; i ++){//从第一个到倒数第二个 for (j = 0 ; j < len - 1 - i ; j ++)//排在后的是已经排序的 { if (a[j] > a[j + 1])//大的数换到后面去 { temp = a[j]; a[j] = a[j + 1]; a [j + 1] = tem