排序算法 先放这里 下次再整理

var
	num: array of Integer;    // 打比方  array里记录的是[5, 3, 2, 4, 1]   =>要的到的结果为[1, 2, 3, 4, 5]
	i: Integer = 1;           // i记录要比较数的位置
	{首先明白字符串,比如‘12345‘  要得到1那么就是s[1], 取5那么就是s[5] , 取数组跟取字符串一样 那么就需要取出每位数字比较}
{$R *.fmx}

procedure TForm2.Button1Click(Sender: TObject);
var
	l, j, k, n: Integer;
begin
	for l := 1 to i - 1 do           // 这个是比较的总次数,如果有四位数则只比较3次
	begin
		k := i - l;                    // k记录比较的那个数的前一个数的位置 比如 现在比较的是最后一位1,那么当时的k就是倒数第二位4的位置
		for j := 1 to k do             // j记录从字符串第一个到比较的数的前两位的位置,一直循环
		begin
			if (num[j] < num[j + 1]) then  //  这里面就是比较的内容啦   如果前一位小于后一位
			begin
				n := num[j];                // 则n 为小的那位数
				num[j] := num[j + 1];       // 此时,小的那位数存放下一位数
				num[j + 1] := n;            // 下一位数存放小的那位数,这样顺序就调过来了
			end;                          // 一直循环,直到比较完位置。
		end;
	end;
	Label1.text := ‘‘;
	for l := i - 1 downto 1 do
		Label1.text := Label1.text + inttostr(num[l]) + ‘ ‘;   //输出
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
	Label1.Text := Label1.Text + ‘ ‘ + Edit1.text;
	num[i] := strtoint(Edit1.text);
	i := i + 1;
	Edit1.text := ‘‘;
	Edit2.text := inttostr(i);
end;
var
    a:array[1..4] of integer;
    i, j, temp, n:integer;
begin
   read(n);
   for i := 1 to n do read(a[i]);
   for i := 1 to n do
       for j := 1 to n-i do
           if a[j] > a[j + 1] then
               begin
                   temp := a[j];
                   a[j] := a[j + 1];
                   a[j+1] := temp;
               end;
    for i:= 1 to n do write(a[i]);
end;
时间: 2024-10-11 22:35:50

排序算法 先放这里 下次再整理的相关文章

深入理解排序算法(一):初级排序算法

[本系列博文会对常见的排序算法进行分析与总结,并会在最后提供几道相关的一线互联网企业面试/笔试题来巩固所学及帮助我们查漏补缺.项目地址:https://github.com/absfree/Algo.由于个人水平有限,叙述中难免存在不清晰准确的地方,希望大家可以指正,谢谢大家:)] 一.概述 我们在日常开发中经常需要对一组数据对象进行排序,这里的数据对象不仅包括数字,还可能是字符串等抽象数据类型(Abstract Data Type).由于排序是很多其他操作(比如二分查找)能够高效进行的基础,因

排序算法——(1)简介

随着人口城镇化的进程,城市人口的慢慢增加,对于一些生活在一二线城市的同学来说,排队已然成为生活中的基操:上公交排队.打车排队.坐地铁排队.点餐排队.喝奶茶排队.办证排队.下课ATM取钱排队……说到排队,猪哥想起有次去银行办事的我……排队我们可以理解为是根据时间(先来后到的)做的一种排序,使元素从无序到有序的方法,我们称为:排序算法. 程序世界往往和现实世界有很多相似之处,所以排序的问题在工作中也常常会遇到,比如商品根据不同条件排序.搜索相关性排序.以及一些根据时间或以某种规则的排序等等:而且在面

数据结构之高级排序算法

一.希尔排序 希尔排序(缩小增量法) 属于插入类排序,由Shell提出,希尔排序对直接插入排序进行了简单的改进:它通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项大跨度地移动,当这些数据项排过一趟序之后,希尔排序算法减小数据项的间隔再进行排序,依次进行下去,进行这些排序时的数据项之间的间隔被称为增量,习惯上用字母h来表示这个增量. 具体代码实现: 1 package data.struct.algorithm; 2 3 //高级排序算法之希尔排序 4 class

【整理】常见排序算法及其时间复杂度总结

原文出处: 1. 白话经典算法系列之八 MoreWindows白话经典算法之七大排序总结篇 2. 面试常用算法总结--排序算法(java版) 3. 常见排序算法小结 本篇主要整理了冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序,堆排序七种常见算法,是从上面三篇博文中摘抄整理的,非原创. 一.冒泡排序 主要思路是: 通过交换相邻的两个数变成小数在前大数在后,这样每次遍历后,最大的数就"沉"到最后面了.重复N次即可以使数组有序. 冒泡排序改进1: 在某次遍历中,如果没有

排序算法学习整理三(插入)

三.插入排序: 插入排序是一种非常简单的排序,它的实现难度低于冒泡和选择.(我第一个for循环写出的排序就是插入排序)插入排序类似整理扑克牌,将每一张牌插到其他已经有序的牌中适当的位置. 基本思想: 插入排序由N-1趟排序组成,对于P=1到N-1趟,插入排序保证从位置0到位置P上的元素为已排序状态. 简单的说,就是插入排序总共需要排序N-1趟,从Index为1开始,讲该位置上的元素与之前的元素比较,放入合适的位置,这样循环下来之后,即为有序数组. 代码实现 1 void insertionSor

九大排序算法再总结

本文是 http://blog.csdn.net/xiazdong/article/details/7304239 的补充,当年看了<大话数据结构>总结的,但是现在看了<算法导论>,发现以前对排序的理解还不深入,所以打算对各个排序的思想再整理一遍. 本文首先介绍了基于比较模型的排序算法,即最坏复杂度都在Ω(nlgn)的排序算法,接着介绍了一些线性时间排序算法,这些排序算法虽然都在线性时间,但是都是在对输入数组有一定的约束的前提下才行. 这篇文章参看了<算法导论>第2.3

数据结构常见的八大排序算法(详细整理)

https://www.jianshu.com/p/7d037c332a9d?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends 八大排序,三大查找是<数据结构>当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法.常见的八大排序算法,他们之间关系如下: 排序算法.png 他们的性能比较: 性能比较.png 下面,利用Python分别将他

c/c++再学习:排序算法了解

1.冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 算法描述 1.比较相邻的元素.如果第一个比第二个大,就交换它们两个: 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数: 3.针对所有的元素重复以上的步骤,除了最后一个:

排序算法整理:冒泡排序、堆排序、插入排序、归并操作、快速排序、希尔排序、选择排序

SortUtils.java package prms.utils.sort; import java.util.Arrays; /** * @ClassName: SortUtils * @Description: <p> 排序算法 工具类 </p> * @author edgar * @email [[email protected]] * @version V 1.0 * @date 2017-3-28 15:35:12 */ public class SortUtils {