我好像发明了一种新的排序算法,不知道前人有没有这样写过

跳起来的蜗牛 无0  2017-11-26 11:59:34

int* Sort(int *arr, int n)
{
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if (arr[i] > arr[j])
{
arr[i] ^= arr[j];
arr[j] ^= arr[i];
arr[i] ^= arr[j];
}
return arr;
}
...全文
179 10 点赞 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2017-11-28
仅供参考:
#include <stdio.h>
#define SWAP(a,b) do ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a)); while (0)
char   *p1="1" ,*p2="2" ;
char    c1=1   , c2=2   ;
short   s1=1   , s2=2   ;
int     i1=1   , i2=2   ;
__int64 I1=1i64, I2=2i64;
float   f1=1.0f, f2=2.0f;
double  d1=1.0 , d2=2.0 ;
void main() {
    SWAP((int)p1,(int)p2);                printf("char *     %5s,   %5s\n",p1,p2);
    SWAP(c1,c2);                          printf("char       %5d,   %5d\n",c1,c2);
    SWAP(s1,s2);                          printf("short      %5d,   %5d\n",s1,s2);
    SWAP(i1,i2);                          printf("int        %5d,   %5d\n",i1,i2);
    SWAP(I1,I2);                          printf("__int64 %5I64d,%5I64d\n",I1,I2);
    SWAP(*(int     *)&f1,*(int     *)&f2);printf("float      %5g,   %5g\n",f1,f2);
    SWAP(*(__int64 *)&d1,*(__int64 *)&d2);printf("double    %5lg,  %5lg\n",d1,d2);

    SWAP(c1,c1);
    printf("%d\n",c1);
}
//char *         2,       1
//char           2,       1
//short          2,       1
//int            2,       1
//__int64     2,    1
//float          2,       1
//double        2,      1
//2
  • 打赏
  • 举报
回复
好#。。。。。。
  • 打赏
  • 举报
回复
ooolinux 2017-11-28
交换两整数,其实可读性不好,可读性>技巧。
  • 打赏
  • 举报
回复
CT8100 2017-11-27
还是冒泡排序,但是赋值方法很不错。
  • 打赏
  • 举报
回复
destory27 2017-11-27
你是把两个数交换用异或写了,数组传进来还需要返回吗?
  • 打赏
  • 举报
回复
ys1212 2017-11-27
。。你这是复杂版的选择排序,多了很多交换操作
  • 打赏
  • 举报
回复
自信男孩 2017-11-27
排序方法没有创新吧,这就是冒泡排序。只是交换数据的方式变了; 建议试一下能够通用,比如交换两个结构体变量;我估计对于两个结构体变量的交换不好使呢。
  • 打赏
  • 举报
回复
FoolCarpe 2017-11-27
这不就是冒泡排序吗?
  • 打赏
  • 举报
回复
das白 2017-11-27
前人这样写过
  • 打赏
  • 举报
回复
paschen 2017-11-27
只是交换数据上的区别,但这种也有局限,比如对于浮点数排序就不适用
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-11-26 11:59
社区公告
暂无公告