C算法:使用选择排序实现从(大到小/从小到大)排序数组,且元素交换不可使用第三变量。

这篇具有很好参考价值的文章主要介绍了C算法:使用选择排序实现从(大到小/从小到大)排序数组,且元素交换不可使用第三变量。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:

使用选择排序实现从(大到小/从小到大)排序,且元素交换不可使用第三变量

(异或交换法)

代码实现:

#include <stdio.h>
void maopao(int* array,int len,int(*swap)(int a,int b))
{
        int i,j;
        for(i=0;i<len-1;i++){
                for(j=i+1;j<len;j++){
                        if(swap(array[i],array[j])){
                                array[i] ^= array[j];
                                array[j] ^= array[i];
                                array[i] ^= array[j];
                        }
                }
        }
}

int asc(int a,int b){
        return a>b;
}

int desc(int a,int b){
        return a<b;
}

void printfArray(int* array,int len)
{
        int i;
        for(i=0;i<len;i++){
                printf("%d",array[i]);
        }
        printf("\n");
}

int main()
{
        int array[9] = {5, 9, 3, 1, 2, 8, 4, 7, 6};
        int len = (sizeof(array)/sizeof(int));
        int mode;
        printf("please input mode num (1:asc    2:desc)\n");
        scanf("%d",&mode);

        switch(mode){
                case 1:
                maopao(array,len,asc);
                printf("asc:\n");
                break;
                case 2:
                maopao(array,len,desc);
                printf("desc:\n");
                break;
                default:
                printf("input mode num error!\n");
                break;
        }
        printfArray(array,len);

        return 0;
}

打印:

C算法:使用选择排序实现从(大到小/从小到大)排序数组,且元素交换不可使用第三变量。,算法,c语言,数据结构文章来源地址https://www.toymoban.com/news/detail-721146.html

到了这里,关于C算法:使用选择排序实现从(大到小/从小到大)排序数组,且元素交换不可使用第三变量。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言---每天小练习,从大到小输出

    题目:从大到小输出   写代码将三个整数数按从大到小输出。   例如:   输入:2 3 1   输出:3 2 1 解题思路:在代码里面我已经写好了,其实根据 三个数依次进行比较,获取最大值,然后进行取最小值。不难。稍微理解就懂了。

    2024年02月15日
    浏览(34)
  • 【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

    本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。 首先,我们定义一个整形的数组并将其初始化。输入n,来决定数组中整数的个数。 然后用for循环来输入这个数组中的各个数字。 接下来,就是对这个数组中的数字进

    2023年04月16日
    浏览(27)
  • C++中map按照从大到小的顺序存储元素

    在对map的使用中,由于对业务的需要,希望map中存储元素能够按照键的大小从大到小的顺序递减存储元素,但之前没有对这块进行了解,只是想当然的使用sort来对map中的元素进行排序,但是不能这样操作的。 本文记录如何对map中的元素按照键的大小从大到小进行递减的存储

    2024年01月17日
    浏览(31)
  • 【排序算法】C语言实现选择排序与冒泡排序

    这里是阿辉算法与数据结构专栏的第一篇文章,咱们就从排序算法开始讲起,排序算法有很多大致分为两类:基于比较的排序和非比较的排序 基于比较的排序:冒泡、选择、插入、希尔、堆、归并、随机快排 非比较的排序:桶排序 以上的排序算法阿辉都会讲到,今天阿辉主

    2024年02月04日
    浏览(31)
  • C#实现选择排序算法

     以下是使用C#实现选择排序算法的示例代码: 这段代码定义了一个名为 SelectionSort 的类,其中包含了一个静态方法 SelectionSortAlgorithm 用于实现选择排序算法。在主程序中,我们创建一个整数数组,然后调用 SelectionSortAlgorithm 方法对其进行排序,并打印排序前后的数组。

    2024年03月10日
    浏览(33)
  • Java 语言实现选择排序算法

    【引言】 选择排序算法是一种简单但有效的排序算法。它的原理是每次从未排序的元素中选择最小(或最大)的元素,放在已排序的末尾(或开头),逐渐形成有序序列。本文将使用Java语言实现选择排序算法,并详细讲解其思想和代码实现。 【算法思想】 选择排序的核心思

    2024年02月11日
    浏览(48)
  • Go 实现选择排序算法及优化

    选择排序是一种简单的比较排序算法,它的算法思路是首先从数组中寻找最小(大)的元素,然后放到数组中的第一位,接下来继续从未排序的元素中寻找最小(大)元素,然后放到已排序元素的末尾,依次类推,直到所有元素被排序。 执行结果: 升序排序。 使用 i 变量表

    2024年02月08日
    浏览(32)
  • (C语言)10个数从小到大排序

    OK,今天再介绍一个算法,10个数从小到大排序 本算法用的冒泡排序法 输入10个整数,第一层循环9次 第2层就是冒泡,外层第1次循环,把最大的一个数放到a[9] 第2次循环把第2大数放在a[8] 同理 第3次a[7] 第4次a[6] 第5次a[5] 第6次a[4] 第7次a[3] 第8次a[2] 第9次a[1] 最后一个就是最小值

    2024年02月06日
    浏览(33)
  • 【C语言】解析C语言实现排序的算法(冒泡排序、插入排序、选择排序、快速排序、归并排序)

    本博客主要围绕五种常见的排序算法展开讨论,包括选择排序、快速排序、归并排序、冒泡排序和插入排序。针对每种算法,我对其思想、特点、时间复杂度、稳定性以及优缺点进行了详细解释和比较。 冒泡排序算法是一种简单且常用的排序算法。它通过重复地交换相邻的元

    2024年02月13日
    浏览(32)
  • Mysql按姓氏从小到大排序的正确sql

    最近有个需求,要按姓氏从小到大查询数据。(姓名都是中文的) 写了一个sql: 结果发现这样不行,排序是乱的。 查询发现,如果mysql字符集是gbk的话,这样就可以; 如果是utf8,那就不行。 需要这样写: 这样就能实现按姓氏从A-Z返回了。

    2024年02月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包