选择排序和冒泡排序的C++和C

更新时间:2023-04-22 08:38:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C选择排序:

#include <stdio.h>

#define N 10

main()

{ int i,j,min,key,a[N];

//input data

printf("please input ten num:\n");

for(i=0;i<N;i++)

{ printf("a[%d]=",i);

scanf("%d\t",&a[i]);}

for(i=0;i<N;i++)

{

printf("%d\t",a[i]);

}

/*sort ten num*/

for(i=0;i<N-1;i++)

{

min=i;

for(j=1;j<N;j++)

{

if(a[min]>a[j]) {min=j;//记下最小元素的下标。

/*********交换元素*********/

key=a[i];

a[i]=a[min];

a[min]=key;}

else continue;

}

}

/*output data*/

printf("After sorted \n");

for(i=0;i<N;i++) printf("%d\t",a[i]);

system("PAUSE");

return 0;

}

C冒泡排序:

#include "stdafx.h"

#include <stdio.h>

#include <iostream>

using namespace std;

#define n 4

int _tmain(int argc, _TCHAR* argv[])

{ int x[n],i=0;

printf("请输入%d个整数:\n",n);

for(i=0;i<n;)

{

scanf_s("%d ",&x[i]);

++i;

}

int j, k, h, t;

for (h=n-1; h>0; h=k) /*循环到没有比较范围*/

{ for (j=0,k=0;j<h;j++) /*每次预置k=0,循环扫描后更新k*/

{ if (*(x+j)>*(x+j+1)) /*大的放在后面,小的放到前面*/

{ t = *(x+j);

*(x+j) = *(x+j+1);

*(x+j+1) = t; /*完成交换*/

k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/

}

}

}

printf("\n排序后的顺序为:\n");

for(i=0;i<n;i++)

printf("%d\t",x[i]);

system("PAUSE");

return 0;

}

C++选择排序:

#include<iostream>

using namespace std;

int main()

{ int num[10] = {9,8,10,3,4,6,4,7,2,1};

int m;

cout<<"排序前:"<<endl;

for (m=0;m<10;m++)

{

cout<<num[m]<<" ";

}

for (int i=0;i < 10;i++)

{ int pos = i;

for (int j=i;j< 10;j++)

{ if (num[pos] > num[j])

{

pos =j;

}

}

int tem;

tem = num[pos];

num[pos] = num[i];

num[i] = tem;

}

cout<<endl<<"排序后:"<<endl;

for (int m = 0;m<10;m++)

{

cout<<num[m]<<" ";

}

system("PAUSE");

return 0;

}

/*选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.*/

C++冒泡排序:

#include "stdafx.h"

#include <stdio.h>

#include <iostream>

using namespace std;

#define LEN 10

int _tmain(int argc, _TCHAR* argv[])

{ int nArray[LEN];

for(int i=0;i<LEN;i++) nArray[i]=LEN-i;

cout<<"原始数据为:"<<endl;

for(int i=0;i<LEN;i++)

cout<<nArray[i]<<" ";

cout<<endl;

//开始冒泡

int temp;

for(int i=LEN-1;i>0;i--)

for(int j=0;j<i;j++)

{ if(nArray[j]>nArray[j+1])

{ temp=nArray[j];

nArray[j]=nArray[j+1];

nArray[j+1]=temp;

}

}

//结束冒泡

cout<<"排序结果:"<<endl;

for(int i=0;i<LEN;i++)cout<<nArray[i]<<" ";

system("PAUSE");

return 0;

}

本文来源:https://www.bwwdw.com/article/trfq.html

Top