舔六年级小女孩的光脚:帕斯卡语言插入排序的程序

来源:百度文库 编辑:高校问答 时间:2024/05/06 00:11:48

program charu(input,output);

var

a:array[1..11] of integer;

x,I,j,n:integer;

f:Boolean;

Begin

{给数组赋一个已经排序好的初值,设A[1]到A[10]分别等于1到10}

For I:=1 to 10 do A[I]:=I;

Writeln(‘数组原来的排列值是:’);

For I:=1 to 10 do write(a[I]:4);

Writeln;

Writeln(‘输入一个整数:’);

Readln(x);

F:=false;

I:=0;N:=10;

Repeat

I:=I+1;

If a[I]>x then f:=ture;

Until I>n or f=ture;

J:=n+1;

While j<>I do

begin

A[j]:=a[j-1];

J:=j-1

End;

A[I]:=x;

Writeln(‘ 插入一个数后的数组排列值是:’);

For I:=1 to n+1 do

Write(a[I]:4)

End.

#include <stdio.h>
#include <stdlib.h>

void insert(int *arr, int a, int n){ /*0到n-1都已排好序*/
int i;
int key = a;

for(i=0; i<n; i++){
if(key < arr[i]){
int j;
for(j=n-1; j>=i; j--){
arr[j+1] = arr[j];
}
arr[i] = key;
return;
}
}

arr[n] = key;
return;
}

void sort(int *arr, int size){
if(size<2)
return;
int i;
for(i=1; i<size; i++){
insert(arr, arr[i], i);
}
}

void main(){
int i, n, *arr;

printf("请输入数组的大小 n = ");
scanf("%d", &n);

arr = (int*)malloc(sizeof(int)*n);

printf("请输入%d个数组元素:\n", n);
for(i=0; i<n; i++){
scanf("%d", &arr[i]);
}

printf("在排序前,数组为:");
for(i=0; i<n; i++){
printf("%d ", arr[i]);
}

printf("\n调用排序函数中...\n");
sort(arr, n);

printf("在排序后,数组变为:");
for(i=0; i<n; i++){
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
}

排序
排序就是将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程。排序问题是一个十分重要的问题,并且排序的方法有很多种:
例子:输入20个数,将它们按照从高到低的次序排列以后输出。
方法一:选择排序
选择排序的基本思想:首先从要进行排序的数中选择最大的一个数,将它放在第一个位置,然后从剩下的数中选择最大的放在第二个位置,如此继续,直到最后剩下的两个数中选出较大的数放在倒数第二个位置,剩下的一个数放在最后完成排序。
具体操作:对需要排序的数据序列进行n-1遍的处理,第1遍处理是将L帕斯卡pascal排序问题[2..n]中每一个元素与L[1]比较,最大者与L[1]交换位置,第2遍处理是将L[3..n]中每一个元素与L[2]比较,最大者与L[2]交换位置,......,第i遍处理是将L[i+1..n]中每一个元素与L[i]比较,最大者与L[i]交换位置。
算法:1、输入20个数到数组a中;
2、用外循环确定每一个数,需要循环19次;(For i:=1 to 19 do)
3、用内循环实现确定数与后面所有数的比较和交换;For j:=i+1 to 20 do
4、输出结果。 If a[i]帕斯卡pascal排序问题

的撒范围发生大发未发生的发射范德萨vff

法到底是生生世世生生世世生生世世生生世世

这个······