1)②排序算法之选择排序{1]直接选择排序

 1 #include<iostream>
 2 using namespace std;
 3
 4 //*******直接选择排序*********
 5 int select_sort(int n,int array[100]){
 6     int i,j;
 7     for(i=0;i<n;i++){
 8         for(j=i;j<n;j++){
 9             if(array[i]>array[j]){
10                 int temp=array[j];
11                 array[j]=array[i];
12                 array[i]=temp;
13             }
14         }
15     }
16     return 0;
17 }
18 //*******直接选择排序*********
19
20 //***********输出*************
21 int print(int n,int array[100]){
22     int i;
23     for(i=0;i<n;i++){
24         cout<<array[i]<<" ";
25     }
26     cout<<endl;
27     return 0;
28 }
29 //***********输出*************
30
31 int main(){
32     int array[10]={3,5,6,7,8,8,1,0,34,56};
33     select_sort(10,array);
34     print(10,array);
35     return 0;
36 }
时间: 2024-11-05 19:22:02

1)②排序算法之选择排序{1]直接选择排序的相关文章

常见排序算法详解(冒泡、选择、插入、快速、希尔、归并)

一.排序算法 1.冒泡排序(Bubble Sort) 定义:是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 原理: 比较相邻的元素.如果第一个比第二个大(升序),就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的

常见的五类排序算法图解和实现(多关键字排序:基数排序以及各个排序算法的总结)

基数排序思想 完全不同于以前的排序算法,可以说,基数排序也叫做多关键字排序,基数排序是一种借助“多关键字排序”的思想来实现“单关键字排序”的内部排序算法. 两种方式: 1.最高位优先,先按照最高位排成若干子序列,再对子序列按照次高位排序 2.最低位优先:不必分子序列,每次排序全体元素都参与,不比较,而是通过分配+收集的方式. 多关键字排序 例:将下表所示的学生成绩单按数学成绩的等级由高到低排序,数学成绩相同的学生再按英语成绩的高低等级排序.        第一个关键字是数学成绩,第二个关键字是英

三种线性排序算法(计数、基数、桶排序)的简单实现

一.计数排序 计数排序假设n个输入元素中的每一个都是介于0到k之间的整数.此处k为某个整数(输入数据在一个小范围内). 基本思想: 计数排序的基本思想是对每一个输入元素x,确定出小于x的元素的个数.然后再将x直接放置在它在最终输出数组中的位置上. 如下图所示: 由于数组中可能有相等的数,在处理时需要注意. 时间复杂度和空间复杂度分析 算法总时间Θ(k + n).当k=O(n)时,计数排序的运行时间是Θ(n). 空间复杂度是O(n+k).需要两个辅助数组:存放排序结果的数组B[n],存放临时结果的

选择排序算法实现十个1-100的随机数的排序

public class Mian {//对数进行选择排序 public static void selectnumber(int[] number){ for(int i=0;i<number.length-1;i++){ int m=i; for(int j=i+1;j<number.length;j++){ if(number[j]<number[m]){ m=j; } if(i!=m){ swap(number,i,m); } } } } //交换两个数 public stati

js排序算法总结——冒泡,快速,选择,插入,希尔,归并

相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法. 一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放在前面: 如 var arr = [7, 3, 10, 1, 8, 4, 2, 4, 4, 3] 进行升序排列,排序过程如下 第一次 [3, 7, 1, 8, 4, 2, 4, 4, 3, 10] 第二次 [3, 1, 7, 4, 2, 4, 4, 3, 8, 10] 以此类推 .... 结果 [1

排序算法合集(冒泡,选择,插入,堆排,快排)

1.冒泡排序 最初在学c语言时,老师就教的这个排序算法,原理比较简单:从数组下标为0处开始遍历,相邻之间进行比较,若a[i]>a[i+1],则exchange(a[i],a[i+1]),当然也可以将小的往后传递,将此过程不断进行,那么最后数组就有序了. 要点:(1)每遍历一遍,末尾就得到一个最大值(或最小值),那么接下来的遍历是不是每次都减少一个元素就好了,因为后边的已经排好序了啊. (2)遍历n-1遍就排好序了,因为最后一遍只剩一个元素了,它一定放那儿,所以最后一遍就不用遍历了. 当然如果数据

排序算法(三)冒泡、选择排序的Python实现及算法优化详解

说在前面 最近一年太忙,博客长草了.近日用Python实现了常用排序算法,供大家参考. Java版本排序算法及优化,请看以前的文章. <排序算法之简单排序(冒泡.选择.插入)> <排序算法(二)堆排序> 1.排序概念 这里不再赘述,请参看前面2篇文章 2.简单排序之冒泡法Python实现及优化 原理图 2.1.基本实现 num_list = [     [1, 9, 8, 5, 6, 7, 4, 3, 2],     [1, 2, 3, 4, 5, 6, 7, 8, 9] ] nu

超级具体解读基本排序算法(不看懊悔,带排序演示动画)

排序与我们日常生活中息息相关.比方.我们要从电话簿中找到某个联系人首先会依照姓氏排序.买火车票会依照出发时间或者时长排序.买东西会依照销量或者好评度排序.查找文件会依照改动时间排序等等.在计算机程序设计中,排序和查找也是最主要的算法,非常多其它的算法都是以排序算法为基础,在一般的数据处理或分析中.通常第一步就是进行排序,比方说二分查找.首先要对数据进行排序.在Donald Knuth 的计算机程序设计的艺术这四卷书中.有一卷是专门介绍排序和查找的. 排序的算法有非常多.在维基百科上有这么一个分类

基本排序算法(冒泡、插入、选择、快排)

1.首先定义一个需要排序的数组: $arr=array(12,432,123,454,232,123,349,3,5,745,90); 2.冒泡排序:相邻之间的数据做对比,每次对比后得出一个下次不需要再对比的数据. function maopao($arr){ $len=count($arr); for($i=0;$i<$len;$i++){ for($j=0;$j<$len-$i;$j++){ if($arr[$j]<$arr[$j+1]){ $temp=$arr[$j; $arr[$

数据结构(复习排序算法)——选泡插(选择,冒泡,插入,希尔)

#include <stdio.h> /** * 希尔排序(优化) * 平均时间复杂度:O(n^1.3) * 平均空间复杂度:O(1) * 稳定性:不稳定 * 思想理念:分组,进行每个gap都进行除以2, * 这样大组分小,有利于数据的移动变小 **/ void shell_sort(int a[],int len){ for(int gap=len>>2;gap>0;gap/=2){ for(int i=gap;i<len;i++){ int j,tmp=a[i];