zoukankan      html  css  js  c++  java
  • 简单快速排序

    最近,开始认真学习算法,为了更好的督促自己学习,也请大家帮忙监督,所以列了出来,欢迎批评指正。

    第一个是选择排序

    选择排序的基本思想是:设有N个元素要排序,首先选择最大的元素与第一个元素交换,然后再对剩余的N-1个元素进行类似处理,这样重复N-1次后,即可将N个元素按由大到小的顺序排列。若由小到大排序,只需每次选择最小元素。
    具体代码如下:

     1 #include "Stdio.h"
     2 #define N 3
     3  void main(void)
     4 {
     5 int temp,i,j;
     6 int arr[N];
     7 for(i=0;i<N;i++)      /* 从键盘上输入3个数 */ 
     8 scanf("%d",&arr[i]);
     9 for(j=0;j<N-1;j++)    /* 3个元素选择2遍 */
    10   {
    11   for(i=j+1;i<N;i++)  /* 没遍进行3-(i+1)次 */
    12   {
    13     if(arr[i]>arr[j])    /* 把arr[j]当做最大数进行比较 */
    14     temp=arr[i];
    15     arr[i]=arr[j];
    16     arr[j]=temp;
    17   }
    18   }
    19   for(i=0;i<N;i++)
    20 {
    21   printf("%8d
    ",arr[i]); 
    22 }   
    23 scanf("%d",&temp);
    24 }

    算法改进:事实上,执行元素的交换并不都是必须的,只要记住比较时大元素的位置,即序号即可,在内循环结束后做一次交换即可,从而提高程序的执行效率。

    代码如下:

    1 #include "Stdio.h"
     2 #define N 3
     3  void main(void)
     4 {
     5 int temp,i,j,k;
     6 int arr[N];
     7 for(i=0;i<N;i++)      /* 从键盘上输入3个数 */ 
     8 scanf("%d",&arr[i]);
     9 for(j=0;j<N-1;j++)    /* 3个元素选择2遍 */
    10   {k=i;
    11   for(i=j+1;i<N;i++)  
    12   { if(a[k]<a[j]) k=j;/* 记住新大元素的序号 */
    13     if(k!=i)   
    14    { temp=arr[i];
    15     arr[i]=arr[j];
    16     arr[j]=temp;}
    17   }
    18   }
    19   for(i=0;i<N;i++)
    20 {
    21   printf("%d
    ",arr[i]); 
    22 }   
    23 scanf("%d",&temp);
    24 }
  • 相关阅读:
    Java并发编程:同步容器
    Java并发编程:深入剖析ThreadLocal
    使用jQuery开发一个响应式超酷整合RSS信息阅读杂志
    Javascript 严格模式
    参数传递的四种形式----- URL,超链接,js,form表单
    《CSS 设计指南》学习笔记 一
    【BootStrap】初步教程
    JavaScript日期对象使用总结
    Web前端知识技能大汇总
    浏览器 CSS Hack 收集
  • 原文地址:https://www.cnblogs.com/hzko5114/p/3496032.html
Copyright © 2011-2022 走看看