C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
2018-02-28 22:51
330 查看
#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置; */ int a[10] = {9,5,10,7,2,3,1,6,8,4}; int i=0,j=0; int n = sizeof(a)/4; //外循环n-1轮 for(i=0;i<n-1;i++){ int pos = i;//始终指向最小的位置 for(j=i+1;j<n;j++){ if(a[j]<a[pos]){ pos = j;//找出最小元素的那个下标 pos=6 第一次6 } } if(i!=pos){ int temp = a[i]; a[i] = a[pos]; a[pos] = temp; } } //输出 for(i=0;i<n;i++){ printf("a[%d]=%d\n",i,a[i]); } return 0; }
相关文章推荐
- C语言输出旋转后数组中的最小数元素的算法原理与实例
- C语言//选择排序 //查找数组范围内最小的值跟第一个值交换 k记录最小值下标
- 用指针实现把数组的最小元素与第一个元素交换
- 【转载】白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 设计算法,对某个已知的循环序列链表,找出其中最小元素的位置
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 有一个数组内放10个整数要求找出最小的数&它的下标然后将它&数组中最前面的元素对换
- 【白话经典算法系列之四】 直接选择排序及交换二个数据的正确实现
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 算法实验一:二分查找算法改进: 当搜索元素x不存在时,返回小于x的最大元素位置i和大于x的最小元素位置j. 当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 【c语言】:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点
- 小根堆对数组排序C语言算法实现
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 关于基本排序的总结选择排序: 算法是: ① 第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换。 ③第i趟排序 第i趟排序开始时,当前有序区和无序区
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 每日一算法之选择排序原理及实现
- C语言数组实现栈的基本操作,并利用O(1)求出栈中最小元素
- 这是一个我面试某公司的算法题目:对一个字符数组进行排序,根据给定的字符,大于它的,放在数组的左边,小于它的,放在数组的右边,且数组中的元素之间的相对位置要保持不变。