标签:ons \n i+1 for bre for循环 tail can clu
假设有n个数,按从小到大排序:
function bubbleSort(arr) {
const length = arr.length;
for (let i = 0; i < length - 1; i++) {
let changeOccur = false; //用于标记某次外循环中,是否方式内循环交换事件
for (let j = 0; j < length - i -1; j++) {
if (arr[j] > arr[j+1]) {
/*
const temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
*/
//这三行的交换函数用ES6来写:
[arr[j], arr[j+1]] = [arr[j+1], arr[j]];
changeOccur = true;
}
}
if (!changeOccur) { //如果一次外循环中,没有发生一次内循环交换,那么可以直接结束排序比较
break;
}
}
}
双向的冒泡排序。
function coaktailBubbleSort(arr) {
const length = arr.length;
let low = 0;
let high = length - 1;
while(low < high) {
let changeOccur = false;
for (let j = low; j < high; j++) {
if(arr[j] > arr[j+1]) {
[arr[j], arr[j+1]] = [arr[j+1], arr[j]];
changeOccur = true;
}
}
if(!changeOccur) {
break;//如果一次交换也没有发生,那直接就可以跳出,结束排序
}
high--;
changeOccur = false;
for (let j = high; j > low; j--) {
if (arr[j] < arr[j-1]) {
[arr[j-1], arr[j]] = [arr[j], arr[j-1]];
changeOccur = true;
}
}
if(!changeOccur) {
break;
}
low++;
}
}
# include<stdio.h>
void bubble(int *list,int len)
{
int i,j,t,flag=0;
for(i=0;i<len-1;i++)
{
flag=0;//设置标记,当某一轮交换没有交换任何数,那下一轮交换也不必进行了
for(j=0;j<len-1-i;j++)
{
if(list[j]>list[j+1])
{
t=list[j];
list[j]=list[j+1];
list[j+1]=t;
flag=1;
}
}
if(flag==0)
{
break;
}
}
}
void main()
{
int n,list[10];
printf("请输入10个整数:");
for(n=0;n<10;n++)
{
scanf("%d",&list[n]);
}
printf("\n");
bubble(list,10);
for(n=0;n<10;n++)
{
printf("%d\t",list[n]);
}
printf("\n");
}
#include<stdio.h>
void CocktailBubble(int *list,int n)
{
int low=0,high=n-1,j,t,flag;
while(low<high)
{
flag=0;//一次进行两趟for循环,第一个for循环排最大值(次大值),第二个for循环排最小值(次小值),只要其中一趟没有交换任何数字就可以结束排序
for(j=low;j<high;j++)
{
if(list[j]>list[j+1])
{
t=list[j];
list[j]=list[j+1];
list[j+1]=t;
flag=1;
}
}
if(flag==0)
{
break;
}
high--;//上述for循环第一次结束,排完最大值;第二次,排完次大值
flag = 0;
for(j=high;j>low;j--)
{
if(list[j]<list[j-1])
{
t=list[j];
list[j]=list[j-1];
list[j-1]=t;
flag = 1;
}
}
if(flag==0)
{
break;
}
low++;//上述for循环第一次结束,排完最小值;第二次,排完次小值
}
}
void main(){
int i,list[10];
printf("请输入10个整数:");
for(i=0;i<10;i++){
scanf("%d",&list[i]);
}
for(i=0;i<10;i++){
printf("%d ",list[i]);
}
printf("\n");
CocktailBubble(list,10);
for(i=0;i<10;i++){
printf("%d ",list[i]);
}
printf("\n");
}
标签:ons \n i+1 for bre for循环 tail can clu
原文地址:https://www.cnblogs.com/Bonnie3449/p/9574421.html